[Mondrian] deadlock in MemberCacheHelper

John V. Sichi jsichi at gmail.com
Wed Apr 2 20:31:23 EDT 2008


A concurrency scenario for LucidEra perf tests (run as part of 
validating the mainline Mondrian codebase for integration) ran into the 
deadlock below.  The code being tested was fairly recent (I can dig up 
the change number if any line numbers don't match).

"pool-2-thread-1" id=63 idx=0xf8 tid=8662 prio=5 alive, in native, blocked
     -- Blocked trying to get lock: 
mondrian/rolap/MemberCacheHelper at 0x25b1daf0[thin lock]
     at jrockit/vm/Threads.sleep(I)V(Native Method)
     at jrockit/vm/Locks.waitForThinRelease(Locks.java:1233)[optimized]
     at jrockit/vm/Locks.monitorEnterSecondStage(Locks.java:1307)[optimized]
     at 
mondrian/rolap/MemberCacheHelper.putMember(MemberCacheHelper.java:84)[optimized]
     at 
mondrian/rolap/SqlMemberSource.makeMember(SqlMemberSource.java:820)[inlined]
     at 
mondrian/rolap/RolapCubeHierarchy$RolapCubeSqlMemberSource.makeMember(RolapCubeHierarchy.java:693)[optimized]
     at 
mondrian/rolap/SqlTupleReader$Target.internalAddRow(SqlTupleReader.java:152)[inlined]
     at 
mondrian/rolap/SqlTupleReader$Target.addRow(SqlTupleReader.java:121)[inlined]
     at 
mondrian/rolap/SqlTupleReader.prepareTuples(SqlTupleReader.java:375)[optimized]
     ^-- Holding lock: mondrian/rolap/MemberCacheHelper at 0x25b1db50[thin 
lock]
     at 
mondrian/rolap/SqlTupleReader.readTuples(SqlTupleReader.java:443)[inlined]
     at 
mondrian/rolap/RolapNativeSet$SetEvaluator.executeList(RolapNativeSet.java:238)[inlined]
     at 
mondrian/rolap/RolapNativeSet$SetEvaluator.execute(RolapNativeSet.java:152)[optimized]
     at 
mondrian/olap/fun/NonEmptyCrossJoinFunDef$1.evaluateList(NonEmptyCrossJoinFunDef.java:54)[optimized]
...

"pool-2-thread-3" id=66 idx=0x104 tid=8666 prio=5 alive, in native, blocked
     -- Blocked trying to get lock: 
mondrian/rolap/MemberCacheHelper at 0x25b1db50[thin lock]
     at jrockit/vm/Threads.sleep(I)V(Native Method)
     at jrockit/vm/Locks.waitForThinRelease(Locks.java:1233)[optimized]
     at jrockit/vm/Locks.monitorEnterSecondStage(Locks.java:1307)[optimized]
     at 
mondrian/rolap/MemberCacheHelper.getMember(MemberCacheHelper.java:73)[inlined]
     at 
mondrian/rolap/RolapCubeHierarchy$RolapCubeHierarchyMemberReader.lookupCubeMember(RolapCubeHierarchy.java:617)[inlined]
     at 
mondrian/rolap/RolapCubeHierarchy$RolapCubeHierarchyMemberReader.readMemberChildren(RolapCubeHierarchy.java:475)[optimized]
     ^-- Holding lock: 
mondrian/rolap/MemberCacheHelper at 0x25b1daf0[recursive]
     at 
mondrian/rolap/SmartMemberReader.getMemberChildren(SmartMemberReader.java:201)[inlined]
     at 
mondrian/rolap/SmartMemberReader.getMemberChildren(SmartMemberReader.java:169)[optimized]
     ^-- Holding lock: mondrian/rolap/MemberCacheHelper at 0x25b1daf0[thin 
lock]
     at 
mondrian/rolap/RolapSchemaReader.internalGetMemberChildren(RolapSchemaReader.java:155)[inlined]
     at 
mondrian/rolap/RolapSchemaReader.lookupMemberChildByName(RolapSchemaReader.java:374)[optimized]
     at 
mondrian/rolap/RolapCubeMember.lookupChild(RolapCubeMember.java:319)[optimized]
     at 
mondrian/rolap/RolapSchemaReader.getElementChild(RolapSchemaReader.java:307)[inlined]
     at mondrian/olap/Util.lookupCompound(Util.java:563)[inlined]
     at 
mondrian/rolap/RolapSchemaReader.lookupCompound(RolapSchemaReader.java:345)[optimized]
     at 
mondrian/olap/DelegatingSchemaReader.lookupCompound(DelegatingSchemaReader.java:100)[inlined]
     at 
mondrian/olap/Query$QuerySchemaReader.lookupCompound(Query.java:1582)[inlined]
     at 
mondrian/olap/Query$QuerySchemaReader.lookupCompound(Query.java:1549)[optimized]
...

JVS



More information about the Mondrian mailing list