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