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

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


The following commit(s) were added to refs/heads/main by this push:
     new f0a73ca779 ARTEMIS-4911 don't increase routed msg count when queue 
filter rejects message
f0a73ca779 is described below

commit f0a73ca779e68b06e18b33290222404f8cb0298b
Author: Justin Bertram <[email protected]>
AuthorDate: Mon Nov 10 17:18:13 2025 -0600

    ARTEMIS-4911 don't increase routed msg count when queue filter rejects 
message
---
 .../artemis/core/postoffice/impl/PostOfficeImpl.java  |  8 ++++++--
 .../integration/client/FullQualifiedQueueTest.java    |  3 ++-
 .../integration/management/AddressControlTest.java    | 19 +++++++++++++++++++
 .../integration/openwire/AdvisoryOpenWireTest.java    |  4 ++--
 4 files changed, 29 insertions(+), 5 deletions(-)

diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java
index 17a055bc39..fbe94f4e0c 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java
@@ -1306,8 +1306,12 @@ public class PostOfficeImpl implements PostOffice, 
NotificationListener, Binding
       }
       if (bindings != null) {
          bindings.route(message, context);
-         if (addressInfo != null) {
-            addressInfo.incrementRoutedMessageCount();
+         if (context.getQueueCount() > 0) {
+            if (addressInfo != null) {
+               addressInfo.incrementRoutedMessageCount();
+            }
+         } else {
+            return null;
          }
       }
       return bindings;
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/FullQualifiedQueueTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/FullQualifiedQueueTest.java
index 29c47ca637..f462768c54 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/FullQualifiedQueueTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/FullQualifiedQueueTest.java
@@ -312,7 +312,8 @@ public class FullQualifiedQueueTest extends 
ActiveMQTestBase {
       producer.send(m);
 
 
-      Wait.assertEquals(1L, () -> 
server.getAddressInfo(anycastAddress).getRoutedMessageCount(), 2000, 100);
+      Wait.assertEquals(useProperty ? 1L : 0L, () -> 
server.getAddressInfo(anycastAddress).getRoutedMessageCount(), 2000, 100);
+      Wait.assertEquals(useProperty ? 0L : 1L, () -> 
server.getAddressInfo(anycastAddress).getUnRoutedMessageCount(), 2000, 100);
       Wait.assertEquals(useProperty ? 1L : 0L, () -> 
server.locateQueue(anycastQ1).getMessageCount(), 2000, 100);
    }
 }
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/AddressControlTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/AddressControlTest.java
index 87d718a025..32ced25415 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/AddressControlTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/AddressControlTest.java
@@ -531,6 +531,25 @@ public class AddressControlTest extends ManagementTestBase 
{
       assertTrue(Wait.waitFor(() -> addressControl.getUnRoutedMessageCount() 
== 2, 2000, 100));
    }
 
+   @Test
+   public void testGetRoutedMessageCountWithFilter() throws Exception {
+      SimpleString address = RandomUtil.randomUUIDSimpleString();
+      session.createAddress(address, RoutingType.ANYCAST, false);
+
+      AddressControl addressControl = createManagementControl(address);
+      assertEquals(0, addressControl.getMessageCount());
+
+      ClientProducer producer = session.createProducer(address.toString());
+      producer.send(session.createMessage(false));
+      assertTrue(Wait.waitFor(() -> addressControl.getRoutedMessageCount() == 
0, 2000, 100));
+      assertTrue(Wait.waitFor(() -> addressControl.getUnRoutedMessageCount() 
== 1, 2000, 100));
+
+      
session.createQueue(QueueConfiguration.of(address).setRoutingType(RoutingType.ANYCAST).setFilterString("key='foo'"));
+      producer.send(session.createMessage(false));
+      assertTrue(Wait.waitFor(() -> addressControl.getRoutedMessageCount() == 
0, 2000, 100));
+      assertTrue(Wait.waitFor(() -> addressControl.getUnRoutedMessageCount() 
== 2, 2000, 100));
+   }
+
    @Test
    public void testSendMessage() throws Exception {
       SimpleString address = RandomUtil.randomUUIDSimpleString();
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/AdvisoryOpenWireTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/AdvisoryOpenWireTest.java
index f378cfa1ed..f2daf45179 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/AdvisoryOpenWireTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/AdvisoryOpenWireTest.java
@@ -71,7 +71,7 @@ public class AdvisoryOpenWireTest extends BasicOpenWireTest {
          Wait.waitFor(() -> advisoryAddress.getMessageCount() == 0);
 
          Wait.assertEquals(0, advisoryAddress::getMessageCount);
-         Wait.assertEquals(2, advisoryAddress::getRoutedMessageCount);
+         Wait.assertEquals(2, advisoryAddress::getUnRoutedMessageCount);
 
       }
    }
@@ -104,7 +104,7 @@ public class AdvisoryOpenWireTest extends BasicOpenWireTest 
{
          Wait.waitFor(() -> advisoryAddress.getMessageCount() == 0);
 
          Wait.assertEquals(0, advisoryAddress::getMessageCount);
-         Wait.assertEquals(2, advisoryAddress::getRoutedMessageCount);
+         Wait.assertEquals(2, advisoryAddress::getUnRoutedMessageCount);
 
       }
    }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to