You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ra...@apache.org on 2008/12/05 07:44:41 UTC
svn commit: r723614 -
/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQSessionExecutor.java
Author: rajdavies
Date: Thu Dec 4 22:44:41 2008
New Revision: 723614
URL: http://svn.apache.org/viewvc?rev=723614&view=rev
Log:
Fix for https://issues.apache.org/activemq/browse/AMQ-2025
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQSessionExecutor.java
Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQSessionExecutor.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQSessionExecutor.java?rev=723614&r1=723613&r2=723614&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQSessionExecutor.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQSessionExecutor.java Thu Dec 4 22:44:41 2008
@@ -19,6 +19,7 @@
import java.util.Iterator;
import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
import javax.jms.JMSException;
@@ -45,6 +46,7 @@
private boolean dispatchedBySessionPool;
private TaskRunner taskRunner;
private boolean startedOrWarnedThatNotStarted;
+ private AtomicBoolean taskRunnerCreated = new AtomicBoolean();
ActiveMQSessionExecutor(ActiveMQSession session) {
this.session = session;
@@ -88,15 +90,18 @@
if (!dispatchedBySessionPool) {
if (session.isSessionAsyncDispatch()) {
try {
- if (taskRunner == null) {
- taskRunner = session.connection.getSessionTaskRunner().createTaskRunner(this, "ActiveMQ Session: " + session.getSessionId());
+ if (taskRunnerCreated.compareAndSet(false, true)) {
+ if (taskRunner == null) {
+ taskRunner = session.connection.getSessionTaskRunner().createTaskRunner(this,
+ "ActiveMQ Session: " + session.getSessionId());
+ }
}
taskRunner.wakeup();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
} else {
- while (iterate()) {
+ while (iterate()) {
}
}
}
@@ -141,6 +146,7 @@
if (taskRunner != null) {
taskRunner.shutdown();
taskRunner = null;
+ taskRunnerCreated.set(false);
}
}
} catch (InterruptedException e) {