2 Replies Latest reply on Jul 6, 2006 9:50 PM by ben.wang

    BoundedLinkedQueue locks everything

    bpapez

      We are using JBossCache 1.0.3 SP2.
      Today we had a situation, where a thread locked everything up. According to the thread dump this was the guilty thread:

      "TP-Processor17" daemon prio=1 tid=0x0885cb98 nid=0x7321 in Object.wait() [7b103000..7b105228]
      at java.lang.Object.wait(Native Method)
      - waiting on <0x8f700048> (a EDU.oswego.cs.dl.util.concurrent.BoundedLinkedQueue)
      at java.lang.Object.wait(Object.java:429)
      at EDU.oswego.cs.dl.util.concurrent.BoundedLinkedQueue.put(BoundedLinkedQueue.java:303)
      - locked <0x8f700048> (a EDU.oswego.cs.dl.util.concurrent.BoundedLinkedQueue)
      - locked <0x8f731118> (a java.lang.Object)
      at org.jboss.cache.eviction.Region.putNodeEvent(Region.java:125)
      at org.jboss.cache.eviction.Region.setVisitedNode(Region.java:107)
      at org.jboss.cache.eviction.RegionManager$EvictionTreeCacheListener.nodeVisited(RegionManager.java:505)
      at org.jboss.cache.TreeCache.notifyNodeVisited(TreeCache.java:5128)
      at org.jboss.cache.TreeCache._get(TreeCache.java:3032)
      at sun.reflect.GeneratedMethodAccessor128.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:324)
      at org.jgroups.blocks.MethodCall.invoke(MethodCall.java:286)
      at org.jboss.cache.interceptors.CallInterceptor.invoke(CallInterceptor.java:50)
      at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:67)
      at org.jboss.cache.interceptors.PessimisticLockInterceptor.invoke(PessimisticLockInterceptor.java:146)
      at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:67)
      at org.jboss.cache.interceptors.UnlockInterceptor.invoke(UnlockInterceptor.java:32)
      at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:67)
      at org.jboss.cache.interceptors.ReplicationInterceptor.invoke(ReplicationInterceptor.java:32)
      at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:67)
      at org.jboss.cache.interceptors.TxInterceptor.handleNonTxMethod(TxInterceptor.java:328)
      at org.jboss.cache.interceptors.TxInterceptor.invoke(TxInterceptor.java:139)
      at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:67)
      at org.jboss.cache.interceptors.CacheMgmtInterceptor.invoke(CacheMgmtInterceptor.java:133)
      at org.jboss.cache.TreeCache.invokeMethod(TreeCache.java:4804)
      at org.jboss.cache.TreeCache.get(TreeCache.java:3040)
      at org.jboss.cache.TreeCache.get(TreeCache.java:3021)
      at org.jahia.services.cache.JahiaTreeCache.getCacheEntry(JahiaTreeCache.java:285)
      at org.jahia.services.cache.JahiaTreeCache.get(JahiaTreeCache.java:151)
      at org.jahia.registries.JahiaFieldDefinitionsRegistry.getDefinition(JahiaFieldDefinitionsRegistry.java:114)

      Most of the other threads were waiting for the lock <0x8f731118> to be released. After about 20 minutes we did another thread dump and the picture was still the same. Thread TP-Processor17 did not move and was still - waiting on <0x8f700048> and blocking all other threads with lock <0x8f731118>. What can we do about that?

      Greetings,
      Benjamin Papez