[hornetq-commits] JBoss hornetq SVN: r7971 - trunk/src/main/org/hornetq/jms/bridge/impl.
do-not-reply at jboss.org
do-not-reply at jboss.org
Fri Sep 18 12:11:14 EDT 2009
Author: jmesnil
Date: 2009-09-18 12:11:12 -0400 (Fri, 18 Sep 2009)
New Revision: 7971
Modified:
trunk/src/main/org/hornetq/jms/bridge/impl/JMSBridgeImpl.java
Log:
HORNETQ-27: Race condition in JMS Bridge between enlisting the XAResource in the TX and message delivery
* make sure the SoureReceiver thread is joined when the bridge is stopped
Modified: trunk/src/main/org/hornetq/jms/bridge/impl/JMSBridgeImpl.java
===================================================================
--- trunk/src/main/org/hornetq/jms/bridge/impl/JMSBridgeImpl.java 2009-09-18 14:02:22 UTC (rev 7970)
+++ trunk/src/main/org/hornetq/jms/bridge/impl/JMSBridgeImpl.java 2009-09-18 16:11:12 UTC (rev 7971)
@@ -135,6 +135,8 @@
private Thread checkerThread;
+ private Thread sourceReceiver;
+
private long batchExpiryTime;
private boolean paused;
@@ -276,8 +278,8 @@
if (trace) { log.trace("Started time checker thread"); }
}
- Thread receiver = new SourceReceiver();
- receiver.start();
+ sourceReceiver = new SourceReceiver();
+ sourceReceiver.start();
if (trace) { log.trace("Started " + this); }
}
@@ -308,6 +310,11 @@
{
checkerThread.interrupt();
}
+
+ if (sourceReceiver != null)
+ {
+ sourceReceiver.interrupt();
+ }
}
//This must be outside sync block
@@ -320,6 +327,16 @@
if (trace) { log.trace("Checker thread has finished"); }
}
+ //This must be outside sync block
+ if (sourceReceiver != null)
+ {
+ if (trace) { log.trace("Waiting for source receiver thread to finish");}
+
+ sourceReceiver.join();
+
+ if (trace) { log.trace("Source receiver thread has finished"); }
+ }
+
if (tx != null)
{
//Terminate any transaction
@@ -1426,11 +1443,11 @@
@Override
public void run()
{
- while(isStarted())
+ while(started)
{
synchronized (lock)
{
- if (isPaused() || failed)
+ if (paused || failed)
{
try
{
More information about the hornetq-commits
mailing list