3 Replies Latest reply on Apr 14, 2008 7:19 PM by Manik Surtani

    custom method to get size of nodes in cache evicts some node

    Jorge Morales Master

      Hi have a cache setup like:
      /a/b/node1
      /a/b/node2
      /a/b/node2
      /a/b/node4
      ...

      I have a custom method to get the number of the nodes in cache. Code is as follows:

      public int size(Fqn fqn) {
       Node<String, T> child = cache.getRoot().getChild(fqn);
       if (child == null) return 0;
       return child.getChildren().size();
      }
      


      With this stack trace when I run this method, and step in the: cache.getRoot().getChild(fqn) a node gets evicted, even though it has a FIFOEvictionPolicy of more nodes than those actually in cache.

      2008-03-26 15:27:59,882-org.jboss.cache.eviction.BaseEvictionAlgorithm.process(BaseEvictionAlgorithm.java:109)-process(): region: /
      2008-03-26 15:27:59,883-org.jboss.cache.eviction.BaseEvictionAlgorithm.processQueues(BaseEvictionAlgorithm.java:183)-processed 0 node events in region: /
      2008-03-26 15:27:59,883-org.jboss.cache.eviction.BaseEvictionAlgorithm.emptyRecycleQueue(BaseEvictionAlgorithm.java:482)-Recycle queue is empty
      2008-03-26 15:28:00,755-org.jboss.cache.eviction.BaseEvictionAlgorithm.process(BaseEvictionAlgorithm.java:109)-process(): region: /
      2008-03-26 15:28:00,755-org.jboss.cache.eviction.BaseEvictionAlgorithm.processQueues(BaseEvictionAlgorithm.java:183)-processed 0 node events in region: /
      2008-03-26 15:28:00,755-org.jboss.cache.eviction.BaseEvictionAlgorithm.emptyRecycleQueue(BaseEvictionAlgorithm.java:482)-Recycle queue is empty
      2008-03-26 15:28:00,755-org.jboss.cache.eviction.BaseEvictionAlgorithm.process(BaseEvictionAlgorithm.java:109)-process(): region: /com.hp.mesims.model.cache.impl.Alumno
      2008-03-26 15:28:00,755-org.jboss.cache.eviction.BaseEvictionAlgorithm.processQueues(BaseEvictionAlgorithm.java:183)-processed 0 node events in region: /com.hp.mesims.model.cache.impl.Alumno
      2008-03-26 15:28:00,756-org.jboss.cache.eviction.BaseEvictionAlgorithm.emptyRecycleQueue(BaseEvictionAlgorithm.java:482)-Recycle queue is empty
      2008-03-26 15:28:00,756-org.jboss.cache.eviction.FIFOAlgorithm.shouldEvictNode(FIFOAlgorithm.java:42)-Deciding whether node in queue /com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno/123126 requires eviction.
      2008-03-26 15:28:01,185-org.jboss.cache.interceptors.InvocationContextInterceptor.invoke(InvocationContextInterceptor.java:40)-Invoked with InvocationContext [InvocationContext{methodCall=MethodName: _get; MethodIdInteger: 31; Args: (/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno)transaction=null, globalTransaction=null, optionOverrides=Option{failSilently=false, cacheModeLocal=false, dataVersion=null, suppressLocking=false, lockAcquisitionTimeout=-1, forceDataGravitation=false, skipDataGravitation=false, forceAsynchronous=false, forceSynchronous=false}, originLocal=true, txHasMods=false, cacheLoaderHasMods=false}]
      2008-03-26 15:28:01,202-org.jboss.cache.interceptors.InvocationContextInterceptor.getTransaction(InvocationContextInterceptor.java:130)-no transaction manager configured, setting tx as null.
      2008-03-26 15:28:01,205-org.jboss.cache.interceptors.BaseTransactionalContextInterceptor.setTransactionalContext(BaseTransactionalContextInterceptor.java:49)-Setting up transactional context.
      2008-03-26 15:28:01,208-org.jboss.cache.interceptors.BaseTransactionalContextInterceptor.setTransactionalContext(BaseTransactionalContextInterceptor.java:50)-Setting tx as null and gtx as null
      2008-03-26 15:28:01,211-org.jboss.cache.interceptors.MethodDispacherInterceptor.invoke(MethodDispacherInterceptor.java:52)-Invoked with method call MethodName: _get; MethodIdInteger: 31; Args: (/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno)
      2008-03-26 15:28:01,214-org.jboss.cache.interceptors.MethodDispacherInterceptor.invoke(MethodDispacherInterceptor.java:57)-Not registered for any handlers, or instructed to skip call. Passing up the chain.
      2008-03-26 15:28:01,218-org.jboss.cache.interceptors.MethodDispacherInterceptor.invoke(MethodDispacherInterceptor.java:52)-Invoked with method call MethodName: _get; MethodIdInteger: 31; Args: (/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno)
      2008-03-26 15:28:01,221-org.jboss.cache.interceptors.MethodDispacherInterceptor.invoke(MethodDispacherInterceptor.java:52)-Invoked with method call MethodName: _get; MethodIdInteger: 31; Args: (/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno)
      2008-03-26 15:28:01,237-org.jboss.cache.interceptors.MethodDispacherInterceptor.invoke(MethodDispacherInterceptor.java:57)-Not registered for any handlers, or instructed to skip call. Passing up the chain.
      2008-03-26 15:28:01,241-org.jboss.cache.interceptors.MethodDispacherInterceptor.invoke(MethodDispacherInterceptor.java:52)-Invoked with method call MethodName: _get; MethodIdInteger: 31; Args: (/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno)
      2008-03-26 15:28:01,256-org.jboss.cache.interceptors.PessimisticLockInterceptor.lock(PessimisticLockInterceptor.java:432)-Attempting to lock node /com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno for owner Thread[main,5,main]
      2008-03-26 15:28:01,261-org.jboss.cache.lock.IdentityLock.acquireReadLock(IdentityLock.java:269)-acquiring RL: fqn=/, caller=Thread[main,5,main], lock=
      2008-03-26 15:28:01,267-org.jboss.cache.lock.IdentityLock.acquireReadLock(IdentityLock.java:275)-acquired RL: fqn=/, caller=Thread[main,5,main], lock=read owners=[Thread[main,5,main]]
      2008-03-26 15:28:01,272-org.jboss.cache.lock.IdentityLock.acquireReadLock(IdentityLock.java:269)-acquiring RL: fqn=/com.hp.mesims.model.cache.impl.Alumno, caller=Thread[main,5,main], lock=
      2008-03-26 15:28:01,278-org.jboss.cache.lock.IdentityLock.acquireReadLock(IdentityLock.java:275)-acquired RL: fqn=/com.hp.mesims.model.cache.impl.Alumno, caller=Thread[main,5,main], lock=read owners=[Thread[main,5,main]]
      2008-03-26 15:28:01,282-org.jboss.cache.lock.IdentityLock.acquireReadLock(IdentityLock.java:269)-acquiring RL: fqn=/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno, caller=Thread[main,5,main], lock=
      2008-03-26 15:28:01,304-org.jboss.cache.lock.IdentityLock.acquireReadLock(IdentityLock.java:275)-acquired RL: fqn=/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno, caller=Thread[main,5,main], lock=read owners=[Thread[main,5,main]]
      2008-03-26 15:28:01,308-org.jboss.cache.interceptors.MethodDispacherInterceptor.invoke(MethodDispacherInterceptor.java:52)-Invoked with method call MethodName: _get; MethodIdInteger: 31; Args: (/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno)
      2008-03-26 15:28:01,318-org.jboss.cache.interceptors.CallInterceptor.invoke(CallInterceptor.java:50)-Passing up method MethodName: _get; MethodIdInteger: 31; Args: (/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno) so it gets invoked on cache.
      2008-03-26 15:28:01,347-org.jboss.cache.RegionManager.getRegion(RegionManager.java:175)-Contents of RegionsRegistry: {/com.hp.mesims.model.cache.impl.Alumno=RegionImpl{fqn=/com.hp.mesims.model.cache.impl.Alumno; classloader=null; status=ACTIVE; eviction=true; timerThreadRegistered=true}, /=RegionImpl{fqn=/; classloader=null; status=ACTIVE; eviction=true; timerThreadRegistered=true}}
      2008-03-26 15:28:01,362-org.jboss.cache.RegionManager.getRegion(RegionManager.java:216)-Trying next region /com.hp.mesims.model.cache.impl.Alumno and got RegionImpl{fqn=/com.hp.mesims.model.cache.impl.Alumno; classloader=null; status=ACTIVE; eviction=true; timerThreadRegistered=true}
      2008-03-26 15:28:01,368-org.jboss.cache.RegionManager.getRegion(RegionManager.java:175)-Contents of RegionsRegistry: {/com.hp.mesims.model.cache.impl.Alumno=RegionImpl{fqn=/com.hp.mesims.model.cache.impl.Alumno; classloader=null; status=ACTIVE; eviction=true; timerThreadRegistered=true}, /=RegionImpl{fqn=/; classloader=null; status=ACTIVE; eviction=true; timerThreadRegistered=true}}
      2008-03-26 15:28:01,377-org.jboss.cache.RegionManager.getRegion(RegionManager.java:216)-Trying next region /com.hp.mesims.model.cache.impl.Alumno and got RegionImpl{fqn=/com.hp.mesims.model.cache.impl.Alumno; classloader=null; status=ACTIVE; eviction=true; timerThreadRegistered=true}
      2008-03-26 15:28:01,383-org.jboss.cache.interceptors.EvictionInterceptor.registerEvictionEventToRegionManager(EvictionInterceptor.java:252)-Adding event EvictedEN[fqn=/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno event=VISIT_NODE_EVENT diff=0] to region at /com.hp.mesims.model.cache.impl.Alumno
      2008-03-26 15:28:01,387-org.jboss.cache.interceptors.EvictionInterceptor.registerEvictionEventToRegionManager(EvictionInterceptor.java:257)-Finished updating node
      2008-03-26 15:28:01,396-org.jboss.cache.interceptors.PessimisticLockInterceptor.invoke(PessimisticLockInterceptor.java:97)-Attempting to release locks on current thread. Locks for the invocation is [read owners=[Thread[main,5,main]], read owners=[Thread[main,5,main]], read owners=[Thread[main,5,main]]]
      2008-03-26 15:28:01,400-org.jboss.cache.interceptors.PessimisticLockInterceptor.invoke(PessimisticLockInterceptor.java:108)-releasing lock for /com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno: read owners=[Thread[main,5,main]]
      2008-03-26 15:28:01,405-org.jboss.cache.interceptors.PessimisticLockInterceptor.invoke(PessimisticLockInterceptor.java:108)-releasing lock for /com.hp.mesims.model.cache.impl.Alumno: read owners=[Thread[main,5,main]]
      2008-03-26 15:28:01,410-org.jboss.cache.interceptors.PessimisticLockInterceptor.invoke(PessimisticLockInterceptor.java:108)-releasing lock for /: read owners=[Thread[main,5,main]]
      2008-03-26 15:28:01,442-org.jboss.cache.interceptors.InvocationContextInterceptor.invoke(InvocationContextInterceptor.java:96)-Resetting invocation-scope options
      2008-03-26 15:28:01,584-org.jboss.cache.eviction.BaseEvictionAlgorithm.process(BaseEvictionAlgorithm.java:109)-process(): region: /
      2008-03-26 15:28:01,584-org.jboss.cache.eviction.BaseEvictionAlgorithm.processQueues(BaseEvictionAlgorithm.java:183)-processed 0 node events in region: /
      2008-03-26 15:28:01,585-org.jboss.cache.eviction.BaseEvictionAlgorithm.emptyRecycleQueue(BaseEvictionAlgorithm.java:482)-Recycle queue is empty
      2008-03-26 15:28:01,882-org.jboss.cache.eviction.BaseEvictionAlgorithm.process(BaseEvictionAlgorithm.java:109)-process(): region: /
      2008-03-26 15:28:01,883-org.jboss.cache.eviction.BaseEvictionAlgorithm.processQueues(BaseEvictionAlgorithm.java:183)-processed 0 node events in region: /
      2008-03-26 15:28:01,883-org.jboss.cache.eviction.BaseEvictionAlgorithm.emptyRecycleQueue(BaseEvictionAlgorithm.java:482)-Recycle queue is empty
      2008-03-26 15:28:02,755-org.jboss.cache.eviction.BaseEvictionAlgorithm.process(BaseEvictionAlgorithm.java:109)-process(): region: /
      2008-03-26 15:28:02,756-org.jboss.cache.eviction.BaseEvictionAlgorithm.processQueues(BaseEvictionAlgorithm.java:183)-processed 0 node events in region: /
      2008-03-26 15:28:02,756-org.jboss.cache.eviction.BaseEvictionAlgorithm.emptyRecycleQueue(BaseEvictionAlgorithm.java:482)-Recycle queue is empty
      2008-03-26 15:28:02,756-org.jboss.cache.eviction.BaseEvictionAlgorithm.process(BaseEvictionAlgorithm.java:109)-process(): region: /com.hp.mesims.model.cache.impl.Alumno
      2008-03-26 15:28:02,757-org.jboss.cache.eviction.BaseEvictionAlgorithm.processVisitedNodes(BaseEvictionAlgorithm.java:400)-Visiting node that was not added to eviction queues. Assuming that it has 1 element.
      2008-03-26 15:28:02,757-org.jboss.cache.eviction.BaseEvictionAlgorithm.processAddedNodes(BaseEvictionAlgorithm.java:278)-Adding node /com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno with 1 elements to eviction queue
      2008-03-26 15:28:02,757-org.jboss.cache.eviction.BaseEvictionAlgorithm.processAddedNodes(BaseEvictionAlgorithm.java:322)-/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno added successfully to eviction queue
      2008-03-26 15:28:02,757-org.jboss.cache.eviction.BaseEvictionAlgorithm.processQueues(BaseEvictionAlgorithm.java:183)-processed 1 node events in region: /com.hp.mesims.model.cache.impl.Alumno
      2008-03-26 15:28:02,757-org.jboss.cache.eviction.BaseEvictionAlgorithm.emptyRecycleQueue(BaseEvictionAlgorithm.java:482)-Recycle queue is empty
      2008-03-26 15:28:02,757-org.jboss.cache.eviction.FIFOAlgorithm.shouldEvictNode(FIFOAlgorithm.java:42)-Deciding whether node in queue /com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno/123126 requires eviction.
      2008-03-26 15:28:02,758-org.jboss.cache.eviction.BaseEvictionAlgorithm.evictCacheNode(BaseEvictionAlgorithm.java:218)-Attempting to evict cache node with fqn of /com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno/123126
      2008-03-26 15:28:02,758-org.jboss.cache.interceptors.InvocationContextInterceptor.invoke(InvocationContextInterceptor.java:40)-Invoked with InvocationContext [InvocationContext{methodCall=MethodName: _evict; MethodIdInteger: 8; Args: (/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno/123126)transaction=null, globalTransaction=null, optionOverrides=Option{failSilently=false, cacheModeLocal=false, dataVersion=null, suppressLocking=false, lockAcquisitionTimeout=-1, forceDataGravitation=false, skipDataGravitation=false, forceAsynchronous=false, forceSynchronous=false}, originLocal=true, txHasMods=false, cacheLoaderHasMods=false}]
      2008-03-26 15:28:02,758-org.jboss.cache.interceptors.InvocationContextInterceptor.getTransaction(InvocationContextInterceptor.java:130)-no transaction manager configured, setting tx as null.
      2008-03-26 15:28:02,758-org.jboss.cache.interceptors.BaseTransactionalContextInterceptor.setTransactionalContext(BaseTransactionalContextInterceptor.java:49)-Setting up transactional context.
      2008-03-26 15:28:02,759-org.jboss.cache.interceptors.BaseTransactionalContextInterceptor.setTransactionalContext(BaseTransactionalContextInterceptor.java:50)-Setting tx as null and gtx as null
      2008-03-26 15:28:02,759-org.jboss.cache.interceptors.MethodDispacherInterceptor.invoke(MethodDispacherInterceptor.java:52)-Invoked with method call MethodName: _evict; MethodIdInteger: 8; Args: (/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno/123126)
      2008-03-26 15:28:02,759-org.jboss.cache.interceptors.MethodDispacherInterceptor.invoke(MethodDispacherInterceptor.java:52)-Invoked with method call MethodName: _evict; MethodIdInteger: 8; Args: (/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno/123126)
      2008-03-26 15:28:02,763-org.jboss.cache.interceptors.MethodDispacherInterceptor.invoke(MethodDispacherInterceptor.java:52)-Invoked with method call MethodName: _evict; MethodIdInteger: 8; Args: (/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno/123126)
      2008-03-26 15:28:02,763-org.jboss.cache.interceptors.MethodDispacherInterceptor.invoke(MethodDispacherInterceptor.java:57)-Not registered for any handlers, or instructed to skip call. Passing up the chain.
      2008-03-26 15:28:02,763-org.jboss.cache.interceptors.MethodDispacherInterceptor.invoke(MethodDispacherInterceptor.java:52)-Invoked with method call MethodName: _evict; MethodIdInteger: 8; Args: (/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno/123126)
      2008-03-26 15:28:02,764-org.jboss.cache.interceptors.PessimisticLockInterceptor.lock(PessimisticLockInterceptor.java:432)-Attempting to lock node /com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno/123126 for owner Thread[EvictionTimer-1,5,main]
      2008-03-26 15:28:02,764-org.jboss.cache.lock.IdentityLock.acquireReadLock(IdentityLock.java:269)-acquiring RL: fqn=/, caller=Thread[EvictionTimer-1,5,main], lock=
      2008-03-26 15:28:02,764-org.jboss.cache.lock.IdentityLock.acquireReadLock(IdentityLock.java:275)-acquired RL: fqn=/, caller=Thread[EvictionTimer-1,5,main], lock=read owners=[Thread[EvictionTimer-1,5,main]]
      2008-03-26 15:28:02,765-org.jboss.cache.lock.IdentityLock.acquireReadLock(IdentityLock.java:269)-acquiring RL: fqn=/com.hp.mesims.model.cache.impl.Alumno, caller=Thread[EvictionTimer-1,5,main], lock=
      2008-03-26 15:28:02,765-org.jboss.cache.lock.IdentityLock.acquireReadLock(IdentityLock.java:275)-acquired RL: fqn=/com.hp.mesims.model.cache.impl.Alumno, caller=Thread[EvictionTimer-1,5,main], lock=read owners=[Thread[EvictionTimer-1,5,main]]
      2008-03-26 15:28:02,773-org.jboss.cache.lock.IdentityLock.acquireReadLock(IdentityLock.java:269)-acquiring RL: fqn=/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno, caller=Thread[EvictionTimer-1,5,main], lock=
      2008-03-26 15:28:02,773-org.jboss.cache.lock.IdentityLock.acquireReadLock(IdentityLock.java:275)-acquired RL: fqn=/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno, caller=Thread[EvictionTimer-1,5,main], lock=read owners=[Thread[EvictionTimer-1,5,main]]
      2008-03-26 15:28:02,774-org.jboss.cache.lock.IdentityLock.acquireWriteLock(IdentityLock.java:169)-acquiring WL: fqn=/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno/123126, caller=Thread[EvictionTimer-1,5,main], lock=
      2008-03-26 15:28:02,774-org.jboss.cache.lock.IdentityLock.acquireWriteLock(IdentityLock.java:175)-acquired WL: fqn=/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno/123126, caller=Thread[EvictionTimer-1,5,main], lock=write owner=Thread[EvictionTimer-1,5,main]
      2008-03-26 15:28:02,774-org.jboss.cache.interceptors.MethodDispacherInterceptor.invoke(MethodDispacherInterceptor.java:52)-Invoked with method call MethodName: _evict; MethodIdInteger: 8; Args: (/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno/123126)
      2008-03-26 15:28:02,775-org.jboss.cache.interceptors.CallInterceptor.invoke(CallInterceptor.java:50)-Passing up method MethodName: _evict; MethodIdInteger: 8; Args: (/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno/123126) so it gets invoked on cache.
      2008-03-26 15:28:02,775-org.jboss.cache.CacheImpl._evict(CacheImpl.java:1530)-_evict(/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno/123126)
      2008-03-26 15:28:02,776-org.jboss.cache.CacheImpl._remove(CacheImpl.java:1238)-_remove(null, "/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno/123126", undo=false)
      2008-03-26 15:28:02,778-com.hp.mesims.cache.manager.impl.SOCacheManagerImpl.nodeEvicted(SOCacheManagerImpl.java:165)-Node evicted with FQN: /com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno/123126
      2008-03-26 15:28:02,779-org.jboss.cache.interceptors.PessimisticLockInterceptor.invoke(PessimisticLockInterceptor.java:97)-Attempting to release locks on current thread. Locks for the invocation is [read owners=[Thread[EvictionTimer-1,5,main]], read owners=[Thread[EvictionTimer-1,5,main]], read owners=[Thread[EvictionTimer-1,5,main]], write owner=Thread[EvictionTimer-1,5,main]]
      2008-03-26 15:28:02,779-org.jboss.cache.interceptors.PessimisticLockInterceptor.invoke(PessimisticLockInterceptor.java:108)-releasing lock for /com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno/123126: write owner=Thread[EvictionTimer-1,5,main]
      2008-03-26 15:28:02,779-org.jboss.cache.interceptors.PessimisticLockInterceptor.invoke(PessimisticLockInterceptor.java:108)-releasing lock for /com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno: read owners=[Thread[EvictionTimer-1,5,main]]
      2008-03-26 15:28:02,780-org.jboss.cache.interceptors.PessimisticLockInterceptor.invoke(PessimisticLockInterceptor.java:108)-releasing lock for /com.hp.mesims.model.cache.impl.Alumno: read owners=[Thread[EvictionTimer-1,5,main]]
      2008-03-26 15:28:02,780-org.jboss.cache.interceptors.PessimisticLockInterceptor.invoke(PessimisticLockInterceptor.java:108)-releasing lock for /: read owners=[Thread[EvictionTimer-1,5,main]]
      2008-03-26 15:28:02,780-org.jboss.cache.interceptors.InvocationContextInterceptor.invoke(InvocationContextInterceptor.java:96)-Resetting invocation-scope options
      2008-03-26 15:28:02,781-org.jboss.cache.eviction.BaseEvictionAlgorithm.evictCacheNode(BaseEvictionAlgorithm.java:240)-Eviction of cache node with fqn of /com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno/123126 successful
      2008-03-26 15:28:02,781-org.jboss.cache.eviction.FIFOAlgorithm.shouldEvictNode(FIFOAlgorithm.java:42)-Deciding whether node in queue /com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno/123121 requires eviction.
      


      Is a call for cache.getRoot().getChild(fqn) passing through interceptor chain and adding an EvictionEvent to EvictionQueue?

      I don`t see this normal. I'll try to do a JUnit to test this behaviour and attach it here.

        • 1. Re: custom method to get size of nodes in cache evicts some
          Manik Surtani Master

           


          Is a call for cache.getRoot().getChild(fqn) passing through interceptor chain and adding an EvictionEvent to EvictionQueue?


          Yes, it would add a node visited event.

          • 2. Re: custom method to get size of nodes in cache evicts some
            Jorge Morales Master

            But why adding a "Node visited event" is making the node to be evicted?

            I have set up a 5 max lement FIFO EvictionPolicy. There is 5 nodes in cache. When I make a call to my custom getSize method, one of the nodes gets evicted, and size return 4.

            I don't underastand this behaviour. Or is it counting the parent node as a node to be accounted for eviction?

            I see this, where visiting a node is adding one of the subnodes to the eviction queue, and actually evicting it:

            2008-03-26 15:28:02,756-org.jboss.cache.eviction.BaseEvictionAlgorithm.process(BaseEvictionAlgorithm.java:109)-process(): region: /com.hp.mesims.model.cache.impl.Alumno
            2008-03-26 15:28:02,757-org.jboss.cache.eviction.BaseEvictionAlgorithm.processVisitedNodes(BaseEvictionAlgorithm.java:400)-Visiting node that was not added to eviction queues. Assuming that it has 1 element.
            2008-03-26 15:28:02,757-org.jboss.cache.eviction.BaseEvictionAlgorithm.processAddedNodes(BaseEvictio
            nAlgorithm.java:278)-Adding node com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno with 1 elements to eviction queue
            2008-03-26 15:28:02,757-org.jboss.cache.eviction.BaseEvictionAlgorithm.processAddedNodes(BaseEvictionAlgorithm.java:322)-/com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno added successfully to eviction queue
            2008-03-26 15:28:02,757-org.jboss.cache.eviction.BaseEvictionAlgorithm.processQueues(BaseEvictionAlgorithm.java:183)-processed 1 node events in region: /com.hp.mesims.model.cache.impl.Alumno
            2008-03-26 15:28:02,757-org.jboss.cache.eviction.BaseEvictionAlgorithm.emptyRecycleQueue(BaseEvictionAlgorithm.java:482)-Recycle queue is empty
            2008-03-26 15:28:02,757-org.jboss.cache.eviction.FIFOAlgorithm.shouldEvictNode(FIFOAlgorithm.java:42)-Deciding whether node in queue /com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno/123126 requires eviction.
            2008-03-26 15:28:02,758-org.jboss.cache.eviction.BaseEvictionAlgorithm.evictCacheNode(BaseEvictionAlgorithm.java:218)-Attempting to evict cache node with fqn of /com.hp.mesims.model.cache.impl.Alumno/com.hp.mesims.model.cache.impl.Alumno/123126
            


            • 3. Re: custom method to get size of nodes in cache evicts some
              Manik Surtani Master

              It wouldn't be causing the node to be evicted - the EvictionEvent just marks an event for the eviction thread to process, which, depending on your algorithm, may remove the node from the eviction queue, e.g., if it has been used recently and you are using a LRU algorithm.