[jboss-user] [JBoss Cache: Core Edition] - Re: LRUPolicy eviction policy

lovelyliatroim do-not-reply at jboss.com
Thu Oct 30 06:23:58 EDT 2008


So here is the config for the test 


  |  <region name="/evictiontest/LRU" policyClass="org.jboss.cache.eviction.LRUPolicy">
  |                   <attribute name="maxNodes">3</attribute>
  |                   <attribute name="timeToLiveSeconds">30</attribute>
  |                   <attribute name="maxAgeSeconds">30</attribute>
  |             </region>
  | 
  | 


My sample test case

  | public void evictionTest(String configPath) throws Exception{
  | 		CacheFactory factory = DefaultCacheFactory.getInstance();
  |         Cache cache = factory.createCache(configPath);
  |         CacheJmxWrapperMBean wrapper = new CacheJmxWrapper(cache);
  |         wrapper.create();
  |         wrapper.start();
  |         System.out.println("Cache created");
  |         
  |         String lruPath="/evictiontest/LRU/a/b/c";
  |         Fqn lruFQN =Fqn.fromString(lruPath);
  |         
  |         String expPath="/evictiontest/EXP/a/b/c";
  |         Fqn expFQN =Fqn.fromString(expPath);
  | 
  |         String key ="data";
  |         HashMap testData = new HashMap();
  |         testData.put("Client", "Bond,James");
  |         
  |         cache.put(lruFQN,key, testData);
  | 
  |         HashMap val = (HashMap)cache.get(lruFQN, key);
  |         System.out.println("Value taken from hash "+val.toString());
  | 
  |         //Test Max Nodes attribute now and how that works
  |         for(int i = 0; i < 10 ;i ++){
  |             lruFQN =Fqn.fromString(lruPath+i);
  |         	cache.put(lruFQN,key, testData);
  |         }
  |         System.out.println("Added more nodes than allowed to region " + wrapper.printCacheDetails());
  |         
  |         int counter = 0;
  |         while(true){
  |         	counter = counter + 10;
  |             Thread.currentThread().sleep(10000);
  |             System.out.println("Slept "+counter +" secs  " + wrapper.printCacheDetails());
  | 
  |         }
  | 
  | 


Output that i see 




  | Cache created
  | Value taken from hash {Client=Bond,James}
  | Added more nodes than allowed to region /  null
  |   /evictiontest  null
  |     /LRU  null
  |       /a  null
  |         /b  null
  |           /c5  {data={Client=Bond,James}}
  |           /c6  {data={Client=Bond,James}}
  |           /c8  {data={Client=Bond,James}}
  |           /c  {data={Client=Bond,James}}
  |           /c7  {data={Client=Bond,James}}
  |           /c9  {data={Client=Bond,James}}
  |           /c2  {data={Client=Bond,James}}
  |           /c0  {data={Client=Bond,James}}
  |           /c1  {data={Client=Bond,James}}
  |           /c4  {data={Client=Bond,James}}
  |           /c3  {data={Client=Bond,James}}
  | 
  | Slept 10 secs  /  null
  |   /evictiontest  null
  |     /LRU  null
  |       /a  null
  |         /b  null
  |           /c8  {data={Client=Bond,James}}
  |           /c7  {data={Client=Bond,James}}
  |           /c9  {data={Client=Bond,James}}
  | 
  | Slept 20 secs  /  null
  |   /evictiontest  null
  |     /LRU  null
  |       /a  null
  |         /b  null
  |           /c8  {data={Client=Bond,James}}
  |           /c7  {data={Client=Bond,James}}
  |           /c9  {data={Client=Bond,James}}
  | 
  | Slept 30 secs  /  null
  |   /evictiontest  null
  |     /LRU  null
  |       /a  null
  |         /b  null
  |           /c8  {data={Client=Bond,James}}
  |           /c7  {data={Client=Bond,James}}
  |           /c9  {data={Client=Bond,James}}
  | 
  | Slept 40 secs  /  null
  |   /evictiontest  null
  |     /LRU  null
  |       /a  null
  |         /b  null
  | 
  | 

Eviction timer thread runs every 3 seconds. So back to the original question, how does maxNodes work?? Its configured as 3, so is that 3 nodes with data below the region or is it 3 nodes regardless of data below the region?? It looks to me like it is nodes with data!! Is this the expected behaviour??

The remaining 3 records get evicted after they have lived their life expectancy of 30 seconds. 

By the way this last test was carried out with 3.x version but the original test was done with the 2.x version. 


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4185658#4185658

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4185658



More information about the jboss-user mailing list