Issue #2903: Blocked operation leads to a deadlock

Type: Bug ReoprtVersion: 2.8.7Priority: CriticalStatus: ActiveReplies: 1
#1

Sometimes we run into a deadlock caused by following stacktrace.
Do you know why the ObjectDB is blocked?

java.lang.Thread.State: BLOCKED (on object monitor)
        at com.objectdb.o.TYM.Z(TYM.java:532)
        - waiting to lock <0x00000007c6950fb0> (a com.objectdb.o.TYM)
        at com.objectdb.o.TYM.y(TYM.java:791)
        at com.objectdb.o.MST.ac(MST.java:956)
        at com.objectdb.o.MST.aj(MST.java:927)
        - locked <0x00000007c68d9168> (a com.objectdb.o.MST)
        at com.objectdb.o.MST.au(MST.java:488)
        at com.objectdb.o.MST.ZF(MST.java:462)
        at com.objectdb.o.WRA.ZF(WRA.java:268)
        at com.objectdb.o.LDR.u(LDR.java:568)
        at com.objectdb.o.LDR.Y9(LDR.java:485)
        at com.objectdb.o.LDR.n(LDR.java:278)
        at com.objectdb.o.OBC.ab(OBC.java:1094)
        at com.objectdb.o.OBC.ai(OBC.java:1012)
        at com.objectdb.jpa.EMImpl.find(EMImpl.java:604)
        - locked <0x00000007ba8587b0> (a com.objectdb.jdo.PMImpl)
        at com.objectdb.jpa.EMImpl.find(EMImpl.java:524)
#2

This stack trace shows one side of the deadlock. If this issue can be reproduced then a partial thread dump of all the relevant threads (probably 2 threads) would help, as well as checking ii the issue still exists in a more recent version (e.g. 2.9.0).

An analysis of this stack trace indicates a situation in which the a find method in executed on a class that is known at the EntityManager layer but unknown yet in the backend store. This is unexpected if you use embedded mode. Could you provide additional information on the class? Is it always a new or modified class?

ObjectDB Support

Reply