summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorMartin Ritchie <ritchiem@apache.org>2007-01-25 13:08:05 +0000
committerMartin Ritchie <ritchiem@apache.org>2007-01-25 13:08:05 +0000
commit6d8a98237757a2520417a26c237943b6bfdb0c95 (patch)
treeadffee8cebb0d381650b4357ea10305e41a0410c /java
parent9110595d00ef21801fe19a099a3e273802ee72e9 (diff)
downloadqpid-python-6d8a98237757a2520417a26c237943b6bfdb0c95.tar.gz
Fixed race condition that would cause duplicate batch data to be logged.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@499781 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rw-r--r--java/perftests/src/main/java/org/apache/qpid/requestreply/PingPongProducer.java13
-rw-r--r--java/perftests/src/test/java/org/apache/qpid/ping/PingAsyncTestPerf.java44
2 files changed, 30 insertions, 27 deletions
diff --git a/java/perftests/src/main/java/org/apache/qpid/requestreply/PingPongProducer.java b/java/perftests/src/main/java/org/apache/qpid/requestreply/PingPongProducer.java
index 1368f631fb..263e62cf04 100644
--- a/java/perftests/src/main/java/org/apache/qpid/requestreply/PingPongProducer.java
+++ b/java/perftests/src/main/java/org/apache/qpid/requestreply/PingPongProducer.java
@@ -505,8 +505,10 @@ public class PingPongProducer extends AbstractPingProducer implements Runnable,
*/
public void onMessage(Message message)
{
+
try
{
+
// Store the reply, if it has a correlation id that is expected.
String correlationID = message.getJMSCorrelationID();
@@ -523,11 +525,18 @@ public class PingPongProducer extends AbstractPingProducer implements Runnable,
{
if (_messageListener != null)
{
- _messageListener.onMessage(message);
+ synchronized (trafficLight)
+ {
+ _messageListener.onMessage(message);
+ trafficLight.countDown();
+ }
+ }
+ else
+ {
+ trafficLight.countDown();
}
_logger.trace("Reply was expected, decrementing the latch for the id.");
- trafficLight.countDown();
long remainingCount = trafficLight.getCount();
diff --git a/java/perftests/src/test/java/org/apache/qpid/ping/PingAsyncTestPerf.java b/java/perftests/src/test/java/org/apache/qpid/ping/PingAsyncTestPerf.java
index b30ecc1a44..a5647babff 100644
--- a/java/perftests/src/test/java/org/apache/qpid/ping/PingAsyncTestPerf.java
+++ b/java/perftests/src/test/java/org/apache/qpid/ping/PingAsyncTestPerf.java
@@ -168,7 +168,7 @@ public class PingAsyncTestPerf extends PingTestPerf //implements TimingControlle
// catch (JMSException e)
// {
// e.printStackTrace();
-// Assert.fail("JMS Exception Recevied" + e);
+// Assert.fail("JMS Exception Received" + e);
// }
// catch (InterruptedException e)
// {
@@ -207,11 +207,15 @@ public class PingAsyncTestPerf extends PingTestPerf //implements TimingControlle
// }
// catch (JMSException e)
// {
-// _logger.error("Error commiting recevied messages", e);
+// _logger.error("Error commiting received messages", e);
// }
// try
// {
-// _timingController.completeTest(false, numPings - numReplies);
+// if (_timingController != null)
+// {
+// _logger.trace("Logging missing message count");
+// _timingController.completeTest(false, numPings - numReplies);
+// }
// }
// catch (InterruptedException e)
// {
@@ -259,35 +263,22 @@ public class PingAsyncTestPerf extends PingTestPerf //implements TimingControlle
// {
// try
// {
-// _logger.trace("Message Recevied");
+// _logger.trace("Message Received");
//
// CountDownLatch count = _perThreadSetup._pingItselfClient.getEndLock(message.getJMSCorrelationID());
//
-// int messagesLeft = (int) count.getCount();
+// int messagesLeft = (int) count.getCount() - 1;// minus one as we haven't yet counted the current message
//
-// int messagesReceived = _totalMessages - messagesLeft;
-//
-// try
+// if ((messagesLeft % _batchSize) == 0)
// {
-// if (messagesReceived % _batchSize == 0)
-// {
-// if (_timingController != null)
-// {
-// _timingController.completeTest(true, _batchSize);
-// }
-// }
-// else if (messagesReceived == _totalMessages)
-// {
-// _logger.info("Test Completed.. signalling");
-// doDone(messagesReceived);
-// }
-//
+// doDone(_batchSize);
// }
-// catch (InterruptedException e)
+// else if (messagesLeft == 0)
// {
-// _logger.error("Interupted Test");
-//// doDone(messagesReceived);
+// doDone(_totalMessages % _batchSize);
// }
+//
+//
// }
// catch (JMSException e)
// {
@@ -303,7 +294,10 @@ public class PingAsyncTestPerf extends PingTestPerf //implements TimingControlle
//
// try
// {
-// _timingController.completeTest(true, messageCount);
+// if (_timingController != null)
+// {
+// _timingController.completeTest(true, messageCount);
+// }
// }
// catch (InterruptedException e)
// {