From f383975c33ab31adc84383e75422314e1e2a03ce Mon Sep 17 00:00:00 2001 From: Robert Gemmell Date: Thu, 17 Jun 2010 11:31:41 +0000 Subject: QPID-2673: dont hold a disposition change listener for messages when accept-mode=NONE and acquire-mode=PRE_ACQUIRED (ie NO_ACK mode) git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@955557 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/qpid/server/subscription/Subscription_0_10.java | 11 +++++++++-- .../java/org/apache/qpid/server/transport/ServerSession.java | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) (limited to 'java/broker/src') diff --git a/java/broker/src/main/java/org/apache/qpid/server/subscription/Subscription_0_10.java b/java/broker/src/main/java/org/apache/qpid/server/subscription/Subscription_0_10.java index 5b3f5250c5..a800ea3328 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/subscription/Subscription_0_10.java +++ b/java/broker/src/main/java/org/apache/qpid/server/subscription/Subscription_0_10.java @@ -296,7 +296,10 @@ public class Subscription_0_10 implements Subscription, FlowCreditManager.FlowCr public void run() { - _session.onMessageDispositionChange(_xfr, _action); + if(_action != null) + { + _session.onMessageDispositionChange(_xfr, _action); + } } } @@ -558,10 +561,14 @@ public class Subscription_0_10 implements Subscription, FlowCreditManager.FlowCr { _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(); diff --git a/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java b/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java index f79a43f330..17a8ce8a43 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java +++ b/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java @@ -256,7 +256,7 @@ public class ServerSession extends Session implements PrincipalHolder, SessionCo if(range != null && range.includes(next)) { MessageDispositionChangeListener changeListener = _messageDispositionListenerMap.get(next); - if(changeListener.acquire()) + if(changeListener != null && changeListener.acquire()) { acquired.add(next); } -- cgit v1.2.1