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