diff options
Diffstat (limited to 'java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java')
-rw-r--r-- | java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java b/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java index b028d60b19..6dae7edb72 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java +++ b/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java @@ -382,13 +382,11 @@ public class SimpleAMQQueue implements AMQQueue, Subscription.StateListener Subscription sub = nextNode.getSubscription(); synchronized(sub.getSendLock()) { - if(subscriptionReady(sub, entry) + if(subscriptionReadyAndHasInterest(sub, entry) && !sub.isSuspended() && sub.isActive()) { - if( sub.hasInterest(entry) ) - { if( !sub.wouldSuspend(entry)) { if(!sub.isBrowser() && entry.acquire(sub)) @@ -406,15 +404,8 @@ public class SimpleAMQQueue implements AMQQueue, Subscription.StateListener } } - } - else - { - QueueEntryList.QueueEntryNode queueEntryNode = (QueueEntryList.QueueEntryNode) sub.getQueueContext(); - if(queueEntryNode.getNext() == entry) - { - sub.setQueueContext(queueEntryNode,entry); - } - } + + } } } @@ -456,7 +447,7 @@ public class SimpleAMQQueue implements AMQQueue, Subscription.StateListener } - private boolean subscriptionReady(final Subscription sub, final QueueEntry entry) + private boolean subscriptionReadyAndHasInterest(final Subscription sub, final QueueEntry entry) { QueueEntryList.QueueEntryNode node = (QueueEntryList.QueueEntryNode) sub.getQueueContext(); @@ -471,6 +462,7 @@ public class SimpleAMQQueue implements AMQQueue, Subscription.StateListener } else { + node = null; break; } |