Hello,
we have experienced a deadlock situation in our backend (jackrabbit 2.6.5),
where it seems that the SharedItemStateManager is the point of failure.
Disclaimer: I have only a limited number of thread dumps and by no means an
expert in analysing them.
Here is the situation. At 12:12 the dump shows
"ajp-8009-20" daemon prio=10 tid=0x0000000001229800 nid=0x40e8 runnable
[0x00007fe03386a000]
java.lang.Thread.State: RUNNABLE
at java.util.HashMap.createEntry(Unknown Source)
at java.util.HashMap.addEntry(Unknown Source)
at java.util.HashMap.put(Unknown Source)
at java.util.HashSet.add(Unknown Source)
at
org.apache.jackrabbit.core.state.SharedItemStateManager.getNonVirtualItemState(SharedItemStateManager.java:1783)
- locked <0x0000000781281568> (a
org.apache.jackrabbit.core.state.SharedItemStateManager)
at
org.apache.jackrabbit.core.state.SharedItemStateManager.getItemState(SharedItemStateManager.java:270)
at
org.apache.jackrabbit.core.state.LocalItemStateManager.getPropertyState(LocalItemStateManager.java:135)
at
org.apache.jackrabbit.core.state.LocalItemStateManager.getItemState(LocalItemStateManager.java:177)
- locked <0x00000007f66b6ec0> (a
org.apache.jackrabbit.core.state.XAItemStateManager)
With already a few other threads waiting for lock 0x0000000781281568.
Then three minutes later:
"ajp-8009-20" daemon prio=10 tid=0x0000000001229800 nid=0x40e8 waiting for
monitor entry [0x00007fe03386a000]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.util.HashMap.createEntry(Unknown Source)
at java.util.HashMap.addEntry(Unknown Source)
at java.util.HashMap.put(Unknown Source)
at java.util.HashSet.add(Unknown Source)
at
org.apache.jackrabbit.core.state.SharedItemStateManager.getNonVirtualItemState(SharedItemStateManager.java:1783)
- locked <0x0000000781281568> (a
org.apache.jackrabbit.core.state.SharedItemStateManager)
at
org.apache.jackrabbit.core.state.SharedItemStateManager.getItemState(SharedItemStateManager.java:270)
at
org.apache.jackrabbit.core.state.LocalItemStateManager.getPropertyState(LocalItemStateManager.java:135)
at
org.apache.jackrabbit.core.state.LocalItemStateManager.getItemState(LocalItemStateManager.java:177)
- locked <0x00000007f66b6e70> (a
org.apache.jackrabbit.core.state.XAItemStateManager)
And the same other threads (actually plus one more) waiting.
Can anybody make some sense out of this, please?
Especially
- is it just a weird concidence that the same thread/stacktrace is locking the
SharedItemStateManager?
- what is thread "ajp-8009-20" blocked on in the second dump?
- how to resolve this ;) ??
Thanks,
Thomas