[Mondrian] Re: VirtualCubeTest.testCalculatedMemberAcrossCubesfailing on SMP

michael bienstein mbienstein at yahoo.fr
Mon Jan 22 06:27:54 EST 2007


I think a debugger won't work because debugging multi-threaded apps is really really difficult.

I did a code review but couldn't work out where it came from.  I assume the thread ID is positive and unique so that if the same Thread object is attached to an underlying os thread it won't be doing the same thing, otherwise the == operator would fail.  The only thing I'd do differently is wrap the try {} finally bloc in the RolapResult around more than just the evaluateBody() method because the axes get evaluated out of it.  But the bug doesn't come from there.  

Oh and you might get conflicting data because in one MDX query we can open and use multiple JDBC Connections.  Should use a ThreadLocal to keep the open connection and re-use it.

Michael

----- Message d'origine ----
De : Pappyn Bart <Bart.Pappyn at vandewiele.com>
À : John V. Sichi <jsichi at gmail.com>
Cc : Mondrian developer mailing list <mondrian at pentaho.org>
Envoyé le : Lundi, 22 Janvier 2007, 11h10mn 25s
Objet : RE: [Mondrian] Re: VirtualCubeTest.testCalculatedMemberAcrossCubesfailing on SMP

Hi John,

I already changed that piece of code, added an extra data member to
remember
if thread local or not.  Cannot check it in for the moment though. 

The best thing to catch this one, would be to attach a debugger on that
particular test.  Best in combination with outer tests, not running it
on its own.

If people who are able to reproduce this bug, would be able to do that
and
tell me what happens, I would be very pleased.

Thanks,
Bart


-----Original Message-----
From: mondrian-bounces at pentaho.org [mailto:mondrian-bounces at pentaho.org]
On Behalf Of John V. Sichi
Sent: maandag 22 januari 2007 11:05
To: Pappyn Bart
Cc: mondrian at pentaho.org
Subject: [Mondrian] Re:
VirtualCubeTest.testCalculatedMemberAcrossCubesfailing on SMP

Pappyn Bart wrote:
> Hi John,
> 
> I have been busy together with Julian trying to simulate this problem.

OK.  I looked through the code changes but couldn't spot anything
obvious.

While I was reviewing, I did notice one unrelated thing.  In your
original code, you were using Thread.getId(), and -1 as an invalid
thread ID.  Then you had to change it to System.identityHashCode(thread)
for 1.4-compatibility.  However, I don't think there's any guarantee
that identityHashCode can't return -1 (even though it's unlikely given
that most JVM's implement it as a pointer address), so is the following
test in RolapStar.clearCachedAggregations still correct?

     if (aggregationKey.getThreadId() == threadId) {
         it.remove();
     }

JVS
_______________________________________________
Mondrian mailing list
Mondrian at pentaho.org
http://lists.pentaho.org/mailman/listinfo/mondrian

______________________________________________________________________
This email has been scanned by the Email Security System.
______________________________________________________________________

_______________________________________________
Mondrian mailing list
Mondrian at pentaho.org
http://lists.pentaho.org/mailman/listinfo/mondrian







	

	
		
___________________________________________________________________________ 
Découvrez une nouvelle façon d'obtenir des réponses à toutes vos questions ! 
Profitez des connaissances, des opinions et des expériences des internautes sur Yahoo! Questions/Réponses 
http://fr.answers.yahoo.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.pentaho.org/pipermail/mondrian/attachments/20070122/ab92ed9f/attachment.html 


More information about the Mondrian mailing list