Author: robbie
Date: Thu Jun 17 11:31:41 2010
New Revision: 955557

URL: http://svn.apache.org/viewvc?rev=955557&view=rev
Log:
QPID-2673: dont hold a disposition change listener for messages when 
accept-mode=NONE and acquire-mode=PRE_ACQUIRED (ie NO_ACK mode)

Modified:
    
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/subscription/Subscription_0_10.java
    
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java

Modified: 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/subscription/Subscription_0_10.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/subscription/Subscription_0_10.java?rev=955557&r1=955556&r2=955557&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/subscription/Subscription_0_10.java
 (original)
+++ 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/subscription/Subscription_0_10.java
 Thu Jun 17 11:31:41 2010
@@ -296,7 +296,10 @@ public class Subscription_0_10 implement
 
         public void run()
         {
-            _session.onMessageDispositionChange(_xfr, _action);
+            if(_action != null)
+            {
+                _session.onMessageDispositionChange(_xfr, _action);
+            }
         }
     }
 
@@ -558,10 +561,14 @@ public class Subscription_0_10 implement
             {
                 _postIdSettingAction._action = new 
ExplicitAcceptDispositionChangeListener(entry, this);
             }
-            else
+            else if(_acquireMode != MessageAcquireMode.PRE_ACQUIRED)
             {
                 _postIdSettingAction._action = new 
ImplicitAcceptDispositionChangeListener(entry, this);
             }
+            else
+            {
+                _postIdSettingAction._action = null;
+            }
 
             _session.sendMessage(xfr, _postIdSettingAction);
             _deliveredCount.incrementAndGet();

Modified: 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java?rev=955557&r1=955556&r2=955557&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java
 (original)
+++ 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java
 Thu Jun 17 11:31:41 2010
@@ -256,7 +256,7 @@ public class ServerSession extends Sessi
                     if(range != null && range.includes(next))
                     {
                         MessageDispositionChangeListener changeListener = 
_messageDispositionListenerMap.get(next);
-                        if(changeListener.acquire())
+                        if(changeListener != null && changeListener.acquire())
                         {
                             acquired.add(next);
                         }



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to