You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cs...@apache.org on 2022/11/10 21:17:49 UTC

[activemq] branch main updated: AMQ-9159 - In topic subscriptions only remove nodes from dispatched list if they match the destination on destination removal

This is an automated email from the ASF dual-hosted git repository.

cshannon pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq.git


The following commit(s) were added to refs/heads/main by this push:
     new 837df23be AMQ-9159 - In topic subscriptions only remove nodes from dispatched list if they match the destination on destination removal
837df23be is described below

commit 837df23be66f9d22e4df61ae40cd70de34e064a7
Author: Christopher L. Shannon (cshannon) <ch...@gmail.com>
AuthorDate: Thu Nov 10 16:06:52 2022 -0500

    AMQ-9159 - In topic subscriptions only remove nodes from dispatched list if
    they match the destination on destination removal
---
 .../java/org/apache/activemq/broker/region/TopicSubscription.java  | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/region/TopicSubscription.java b/activemq-broker/src/main/java/org/apache/activemq/broker/region/TopicSubscription.java
index 050bb9aa2..73b6017c4 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/region/TopicSubscription.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/region/TopicSubscription.java
@@ -357,14 +357,15 @@ public class TopicSubscription extends AbstractSubscription {
     public List<MessageReference> remove(ConnectionContext context, Destination destination) throws Exception {
         if (isUseTopicSubscriptionInflightStats()) {
             synchronized(dispatchLock) {
-                for (DispatchedNode node : dispatched) {
+                dispatched.removeIf(node -> {
                     if (node.getDestination() == destination) {
                         //We only need to clean up inflight message size here on the sub stats as
                         //inflight on destination stat is cleaned up on destroy
                         getSubscriptionStatistics().getInflightMessageSize().addSize(-node.getSize());
+                        return true;
                     }
-                }
-                dispatched.clear();
+                    return false;
+                });
             }
         }
         return super.remove(context, destination);