Start a Conversation

This post is more than 5 years old

Solved!

Go to Solution

4780

June 9th, 2010 05:00

correct XAM way to query for content passed the retention period

Hi all,

I'm using XAM to interact with Centera. I can't figure out the correct way to find the clips which are passed their retention period.

I thought about using the SQL-like query functionality like this:

select ".xset.xuid" where "app-vendor" = 'myVendorName' and "app-name" = 'myAppName' and

But I'm having two problems with that approach:

1) I can't figure out the "part to detect clips which are passed their retention period" in the where clause

2) This seems to be very slow if there are a lot of documents in Centera

So, should I use another method? If so, what would that look like? If not, what do I need to complete the where clause? Any advice is welcome.

Thanks,

Ludovic

417 Posts

June 9th, 2010 06:00

For Centera, Query should be thought of as a Disaster Recovery / Batch Process job as it is a very expensive operation and most certainly does not give "real time" results.

As XSets can be under different types of retention, there is no easy way of formatting a query to give the results you are looking for. For example, clips could have a base retention, an event based retention (that may have been triggered already or may yet to be so) and could possibly have one or more litigation holds active.

XAM provides athe XSyststem_IsXSetRetained API to determine if an XSet can be deleted, and this is the easiest way of detrmining such XSets.

However, rather than using XAM Query, it would be much more efficient if you looked at making your application more intelligent in terms of knowing when content should expire. Creating a trigger within the database that stores the XUIDs for your content would be one way of doing this.

June 9th, 2010 07:00

Thanks a lot for your explanations, Graham.

In our case, event-based retentions don't exist, so that makes things it a bit easier.

The problem with XSystem.isXSetRetained is that it wouldn't be very performant to execute that for each XUID which exists in Centera.

It looks like we indeed have to use (duplicated) retention information from our application and use that to determine where content is "expired".

Thanks, this confirms which way we need to go in order to solve this.

Best regards,

Ludovic

June 9th, 2010 07:00

A follow-up question:

I'm looking into solving this by making my application more intelligent, as you suggested, and want to extract the retention duration out of retention policies, so that I can see whether or not it's passed its retention period.

Basically, I have a hashmap in which I want to put the name of the policy and the duration associated to it:

XIterator xIterator = myXSystem.openFieldIterator(XSystem.XAM_RETENTION_DURATION_POLICY_LIST);

while (xIterator.hasNext()) {
     String fieldName = (String) xIterator.next();
     myRetentionPolicies.put(fieldName), myXSystem.getString(fieldName));
}
xIterator.close();

However, it seems like "myXSystem.getString(fieldName)" isn't the correct way to extract the value.

But according to the reference manual, getString(fieldName) "Gets the XAM string value of the named field.". Am I understanding the purpose of that method incorrectly? Which method should I use to get the value of my duration?

Thanks a lot,

Ludovic

417 Posts

June 9th, 2010 08:00

As the retention policy is a string field, the value you get back is the string value of a retention class configured on the cluster e.g. email, OneYear, default etc.

There is no elegant way to get underlying value (number of milliseconds) using XAM and an XSystem object (the EMC Centera SDK does have an API call to retrieve the value of a retention class but it was not included in the XAM standard).

The workaround to achieve this is to create an XSet, apply the policy to it, use XSet_GetActualRetentionDuration to retrieve the value and then call XSet_Abandon. Do this for each policy in turn and you will be able to build your hash table - not elegant, but it works!

June 10th, 2010 02:00

Thank you, that solves the probleem indeed!

(In case anyone else is looking for this, you need to pass either "base" or "event" as a parameter to the  getActualRetentionDuration method -- took me a while to find that one :-).)

13 Posts

March 15th, 2011 02:00

Hi Staurt,

You have mentioned that there is no specific API to get the inormation about retention class in XAM. Are there any reasons for this?

Thanks,

Priya

417 Posts

March 15th, 2011 04:00

As I said in that post, it is not in the SNIA-defined standard.

No Events found!

Top