[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