Hi there Eugene,

The free space checking code, is that running as a separate process or as part of each of the server jvms? I would run the free space checking as part of each server(deployed as part of the server code). This way each server will monitor it's own free space.

I'm not sure how to get the last access time of each item, but if you can get hold of that information, then you can run some code that will use the PartitionRegionHelper.getLocalData(Region) or PartitionRegionHelper.getLocalPrimaryData(Region) to get the local data.

Then you could remove/invalidate the data entry.

Also disk store compaction now plays a role. So you might have to trigger a compaction of the diskstore in order to avoid unnecessary data being held in the diskstores.

The simplest way you could do this is by running the following: (as per the DiskStore API <http://geode.incubator.apache.org/releases/latest/javadoc/com/gemstone/gemfire/cache/DiskStore.html>)

Cache cache = CacheFactory.getAnyInstance();
DiskStore diskstore = cache.findDiskStore("diskStoreName");
diskstore.forceCompaction();

The forceCompaction method is blocking, so please do not make this code as part of some critical processing step.

--Udo

On 28/04/2016 6:25 am, Eugene Strokin wrote:
I'm running a periodic check of the free space on each node of my cluster. The cluster contains a partitioned region. If some node is getting full, I'd like to remove least recently used items to free up the space. New items are getting loaded constantly. I've enabled statistics, so it looks like I can get last access time of each item, but I'd like to iterate through only "local" items, the items which are stored on the local node only. I'm trying different things, but none of them seems right. Is it even possible? If so, could you please point me to the right direction?

Thank you,
Eugene


Reply via email to