You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ta...@apache.org on 2015/02/04 22:48:19 UTC

qpid-jms git commit: Session needs to wait until the dispatch to the consumer is completely done before thinking the consumer is stopped otherwise it might shutdown or null the executor while a dispatch is still in progress.

Repository: qpid-jms
Updated Branches:
  refs/heads/master c28709728 -> 21c2a3574


Session needs to wait until the dispatch to the consumer is completely
done before thinking the consumer is stopped otherwise it might shutdown
or null the executor while a dispatch is still in progress.

Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/21c2a357
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/21c2a357
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/21c2a357

Branch: refs/heads/master
Commit: 21c2a3574987ffc98de4ebb5eba365e299509204
Parents: c287097
Author: Timothy Bish <ta...@gmail.com>
Authored: Wed Feb 4 16:01:26 2015 -0500
Committer: Timothy Bish <ta...@gmail.com>
Committed: Wed Feb 4 16:01:26 2015 -0500

----------------------------------------------------------------------
 .../org/apache/qpid/jms/JmsMessageConsumer.java | 26 +++++++++++++-------
 1 file changed, 17 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/21c2a357/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsMessageConsumer.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsMessageConsumer.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsMessageConsumer.java
index 0547440..8443caa 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsMessageConsumer.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsMessageConsumer.java
@@ -323,21 +323,29 @@ public class JmsMessageConsumer implements MessageConsumer, JmsMessageAvailableC
                     }
                 });
             }
-            if(envelope.isEnqueueFirst()) {
+
+            if (envelope.isEnqueueFirst()) {
                 this.messageQueue.enqueueFirst(envelope);
             } else {
                 this.messageQueue.enqueue(envelope);
             }
-        } finally {
-            lock.unlock();
-        }
 
-        if (this.messageListener != null && this.started) {
-            session.getExecutor().execute(new MessageDeliverTask());
-        } else {
-            if (availableListener != null) {
-                availableListener.onMessageAvailable(this);
+            if (this.messageListener != null && this.started) {
+                session.getExecutor().execute(new MessageDeliverTask());
+            } else {
+                if (availableListener != null) {
+                    session.getExecutor().execute(new Runnable() {
+                        @Override
+                        public void run() {
+                            if (session.isStarted()) {
+                                availableListener.onMessageAvailable(JmsMessageConsumer.this);
+                            }
+                        }
+                    });
+                }
             }
+        } finally {
+            lock.unlock();
         }
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org