1 Reply Latest reply on Jul 4, 2008 5:31 AM by manik

    How do items get automatically removed from the cache?

    eightmd

      I've just started looking at JBossCache and I was writing some tests to see how it works. I am trying to put nodes into the cache and then see them expire. I have used a region and used n LRU eviction policy. I was thinking that setting TimeToLiveSeconds and/or MaxAgeSeconds would cause the node to be completely removed from the cache. I know that the RegionManager has to wake up so I setWakeUpIntervalSeconds on the EvictionConfiguration to 4 seconds.

       LRUConfiguration lru = new LRUConfiguration();
       lru.setMaxNodes(5000);
       lru.setTimeToLiveSeconds(2);
       lru.setMaxAgeSeconds(2);
      


      I did a sleep for 10 seconds and the node was still there.

      I then tried doing the following which I found in the user manual.

       Long future = new Long(System.currentTimeMillis() + 2000);
       cache.getRoot().getChild(nodeFqn).put(ExpirationConfiguration.EXPIRATION_KEY, future);
      
       assertTrue(cache.getRoot().hasChild(nodeFqn));
       Thread.sleep(10000);
      
       // after 5 seconds, expiration completes
       assertFalse(cache.getRoot().hasChild(nodeFqn));
      


      The node was still there.

      Then I tried this:

       ExpirationConfiguration ec = new ExpirationConfiguration();
       ec.setTimeToLiveSeconds(2);
      
      cache.getRoot().getChild(nodeFqn).put(ExpirationConfiguration.EXPIRATION_KEY, ec);
      
       assertTrue(cache.getRoot().hasChild(nodeFqn));
       Thread.sleep(10000);
      
       // after 5 seconds, expiration completes
       Node n1 = cache.getRoot().getChild(nodeFqn);
       assertFalse(cache.getRoot().hasChild(nodeFqn));
      


      The node was still there. So if anyone can tell me what I'm missing I would appreciate it. I am expecting to see the node gone from the cache by one of these methods. Thanks for any help you can provide.

        • 1. Re: How do items get automatically removed from the cache?
          manik

          Are you actually attaching the LRU or Expiry policy to a region? :-)

          Look at EvictionConfig and EvictionRegionConfig.

          And make sure you add your EvictionConfig to your cache's Configuration using Configuration.setEvictionConfig() and use this Configuration instance with the CacheFactory to create a cache.