<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE></TITLE>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.6001.18000" name=GENERATOR></HEAD>
<BODY><!-- Converted from text/plain format -->
<P><FONT size=2><TD nowrap="nowrap"><FONT size=3>Logged bug 1932920 
</TD><TD></FONT><A 
href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1932920&amp;group_id=35302&amp;atid=414613"><!-- google_ad_section_start --><FONT 
size=3>Deadlock in MemberCacheHelper</FONT></A><FONT size=3>. Will take a look 
tomorrow.</FONT></TD><BR><BR>&gt; -----Original Message-----<BR>&gt; From: 
mondrian-bounces@pentaho.org<BR>&gt; [<A 
href="mailto:mondrian-bounces@pentaho.org">mailto:mondrian-bounces@pentaho.org</A>] 
On Behalf Of John V. Sichi<BR>&gt; Sent: Wednesday, April 02, 2008 5:31 
PM<BR>&gt; To: mondrian@pentaho.org<BR>&gt; Subject: [Mondrian] deadlock in 
MemberCacheHelper<BR>&gt;<BR>&gt; A concurrency scenario for LucidEra perf tests 
(run as part of<BR>&gt; validating the mainline Mondrian codebase for 
integration)<BR>&gt; ran into the<BR>&gt; deadlock below.&nbsp; The code being 
tested was fairly recent (I<BR>&gt; can dig up<BR>&gt; the change number if any 
line numbers don't match).<BR>&gt;<BR>&gt; "pool-2-thread-1" id=63 idx=0xf8 
tid=8662 prio=5 alive, in<BR>&gt; native, 
blocked<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Blocked trying to get 
lock:<BR>&gt; mondrian/rolap/MemberCacheHelper@0x25b1daf0[thin 
lock]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at 
jrockit/vm/Threads.sleep(I)V(Native 
Method)<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<BR>&gt; 
jrockit/vm/Locks.waitForThinRelease(Locks.java:1233)[optimized]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
at<BR>&gt; 
jrockit/vm/Locks.monitorEnterSecondStage(Locks.java:1307)[optimized]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
at<BR>&gt; 
mondrian/rolap/MemberCacheHelper.putMember(MemberCacheHelper.j<BR>&gt; 
ava:84)[optimized]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<BR>&gt; 
mondrian/rolap/SqlMemberSource.makeMember(SqlMemberSource.java<BR>&gt; 
:820)[inlined]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<BR>&gt; 
mondrian/rolap/RolapCubeHierarchy$RolapCubeSqlMemberSource.mak<BR>eMember(RolapCubeHierarchy.java:693)[optimized]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
at<BR>&gt; 
mondrian/rolap/SqlTupleReader$Target.internalAddRow(SqlTupleRe<BR>ader.java:152)[inlined]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
at<BR>&gt; 
mondrian/rolap/SqlTupleReader$Target.addRow(SqlTupleReader.jav<BR>a:121)[inlined]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
at<BR>&gt; 
mondrian/rolap/SqlTupleReader.prepareTuples(SqlTupleReader.jav<BR>&gt; 
a:375)[optimized]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ^-- Holding 
lock:<BR>&gt; mondrian/rolap/MemberCacheHelper@0x25b1db50[thin<BR>&gt; 
lock]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<BR>&gt; 
mondrian/rolap/SqlTupleReader.readTuples(SqlTupleReader.java:4<BR>&gt; 
43)[inlined]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<BR>&gt; 
mondrian/rolap/RolapNativeSet$SetEvaluator.executeList(RolapNa<BR>tiveSet.java:238)[inlined]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
at<BR>&gt; 
mondrian/rolap/RolapNativeSet$SetEvaluator.execute(RolapNative<BR>Set.java:152)[optimized]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
at<BR>&gt; 
mondrian/olap/fun/NonEmptyCrossJoinFunDef$1.evaluateList(NonEm<BR>ptyCrossJoinFunDef.java:54)[optimized]<BR>&gt; 
...<BR>&gt;<BR>&gt; "pool-2-thread-3" id=66 idx=0x104 tid=8666 prio=5 alive, 
in<BR>&gt; native, blocked<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Blocked 
trying to get lock:<BR>&gt; mondrian/rolap/MemberCacheHelper@0x25b1db50[thin 
lock]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at 
jrockit/vm/Threads.sleep(I)V(Native 
Method)<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<BR>&gt; 
jrockit/vm/Locks.waitForThinRelease(Locks.java:1233)[optimized]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
at<BR>&gt; 
jrockit/vm/Locks.monitorEnterSecondStage(Locks.java:1307)[optimized]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
at<BR>&gt; 
mondrian/rolap/MemberCacheHelper.getMember(MemberCacheHelper.j<BR>&gt; 
ava:73)[inlined]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<BR>&gt; 
mondrian/rolap/RolapCubeHierarchy$RolapCubeHierarchyMemberRead<BR>er.lookupCubeMember(RolapCubeHierarchy.java:617)[inlined]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
at<BR>&gt; 
mondrian/rolap/RolapCubeHierarchy$RolapCubeHierarchyMemberRead<BR>er.readMemberChildren(RolapCubeHierarchy.java:475)[optimized]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
^-- Holding lock:<BR>&gt; 
mondrian/rolap/MemberCacheHelper@0x25b1daf0[recursive]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
at<BR>&gt; 
mondrian/rolap/SmartMemberReader.getMemberChildren(SmartMember<BR>&gt; 
Reader.java:201)[inlined]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<BR>&gt; 
mondrian/rolap/SmartMemberReader.getMemberChildren(SmartMember<BR>&gt; 
Reader.java:169)[optimized]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ^-- Holding 
lock:<BR>&gt; mondrian/rolap/MemberCacheHelper@0x25b1daf0[thin<BR>&gt; 
lock]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<BR>&gt; 
mondrian/rolap/RolapSchemaReader.internalGetMemberChildren(Rol<BR>&gt; 
apSchemaReader.java:155)[inlined]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
at<BR>&gt; 
mondrian/rolap/RolapSchemaReader.lookupMemberChildByName(Rolap<BR>&gt; 
SchemaReader.java:374)[optimized]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
at<BR>&gt; 
mondrian/rolap/RolapCubeMember.lookupChild(RolapCubeMember.jav<BR>&gt; 
a:319)[optimized]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<BR>&gt; 
mondrian/rolap/RolapSchemaReader.getElementChild(RolapSchemaRe<BR>&gt; 
ader.java:307)[inlined]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at 
mondrian/olap/Util.lookupCompound(Util.java:563)[inlined]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
at<BR>&gt; 
mondrian/rolap/RolapSchemaReader.lookupCompound(RolapSchemaRea<BR>&gt; 
der.java:345)[optimized]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<BR>&gt; 
mondrian/olap/DelegatingSchemaReader.lookupCompound(Delegating<BR>&gt; 
SchemaReader.java:100)[inlined]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at<BR>&gt; 
mondrian/olap/Query$QuerySchemaReader.lookupCompound(Query.jav<BR>a:1582)[inlined]<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
at<BR>&gt; 
mondrian/olap/Query$QuerySchemaReader.lookupCompound(Query.jav<BR>a:1549)[optimized]<BR>&gt; 
...<BR>&gt;<BR>&gt; JVS<BR>&gt; 
_______________________________________________<BR>&gt; Mondrian mailing 
list<BR>&gt; Mondrian@pentaho.org<BR>&gt; <A 
href="http://lists.pentaho.org/mailman/listinfo/mondrian">http://lists.pentaho.org/mailman/listinfo/mondrian</A><BR>&gt; 
</FONT></P></BODY></HTML>