Oops! I removed way too much: pairing is not used for testing, but it does
seem to be write-only.
Perhaps it is being used to keep references alive?
Why is it static?
I'm now unsure as to what any of the apparently unused items are for, so
I've put it all back, but made the accesses to pairing synchronized. This
will hopefully help.
S.
-----Original Message-----
From: BAZLEY, Sebastian
Sent: 20 October 2003 10:32
To: 'JMeter Developers List'
Subject: RE: Threads sometimes get stuck in startup
To answer my own question: I've now had a chance to look more closely at the
TestCompiler code.
It appears that the "pairing" Set is purely used for testing, and the Set is
"write-only"!
So I've commented out the code in CVS.
Hopefully this will fix the hangs, but it will take some while to find out,
as it did not happen often.
S.
-----Original Message-----
From: BAZLEY, Sebastian
Sent: 18 October 2003 12:44
To: JMeter Developers List
Subject: Threads sometimes get stuck in startup
We're using JMeter in batch mode to test a private protocol.
Mostly it runs very well, but two of the test-runs appeared to hang.
It turned out that one or two of the test threads failed to complete - in
fact they seem to have got stuck in startup.
I've got a Thread Dump for the second failure, but I'm not familiar with the
meaning of the thread dump, I can only guess.
It looks like the problem is in java.util.HashMap or HashSet, which are not
synchronized.
Now TestCompiler.subtractNode() references:
private static Set pairing = new HashSet();
I don't know what the pairing Set is used for, but it looks like it _may_ be
the cause of the hang.
Can it be made an instance variable? Indeed, is it needed?
Sebastian
Part of the thread dump; the other test thread looked much the same.
**** TEST1-35 thread 0x152C9570 Stack trace:
[...]
pc 0x00001e839358 sp 0x303efb0 -1:
java/util/HashMap.containsKey(Ljava/lang/Object;)Z
pc 0x00001e907da4 sp 0x303eff0 5:
java/util/HashSet.contains(Ljava/lang/Object;)Z
pc 0x00001e907794 sp 0x303f010 107:
org/apache/jmeter/threads/TestCompiler.subtractNode()V
pc 0x00001e8c25e8 sp 0x303f070 69:
org/apache/jorphan/collections/HashTree.traverseInto(Lorg/apache/jorphan/col
lections/HashTreeTraverser;)V
pc 0x00001e8c2578 sp 0x303f0c0 38:
org/apache/jorphan/collections/HashTree.traverseInto(Lorg/apache/jorphan/col
lections/HashTreeTraverser;)V
pc 0x00001e8c2578 sp 0x303f110 38:
org/apache/jorphan/collections/HashTree.traverseInto(Lorg/apache/jorphan/col
lections/HashTreeTraverser;)V
pc 0x00001e8c2418 sp 0x303f160 38:
org/apache/jorphan/collections/HashTree.traverse(Lorg/apache/jorphan/collect
ions/HashTreeTraverser;)V
pc 0x00001e9035d0 sp 0x303f1b0 37:
org/apache/jmeter/threads/JMeterThread.run()V
pc 0x00001e90b320 sp 0x303f200 11: java/lang/Thread.run()V
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]