This is an automated email from the ASF dual-hosted git repository. clebertsuconic pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/artemis.git
commit a0b80b804b76baff6c906b247bbf9c3f4a07a6b4 Author: nozdrya.d.a <[email protected]> AuthorDate: Fri Feb 27 16:38:46 2026 +0300 ARTEMIS-5915 fix/incorrect_return_value_for_atomic_verify --- .../core/postoffice/impl/NoOpDuplicateIDCache.java | 2 +- .../tests/integration/DuplicateDetectionTest.java | 93 +++++++++++++++++++++- 2 files changed, 90 insertions(+), 5 deletions(-) diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/NoOpDuplicateIDCache.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/NoOpDuplicateIDCache.java index 4cea18e87d..5443de2b2f 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/NoOpDuplicateIDCache.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/NoOpDuplicateIDCache.java @@ -32,7 +32,7 @@ public final class NoOpDuplicateIDCache implements DuplicateIDCache { @Override public boolean atomicVerify(byte[] duplID, Transaction tx) throws Exception { - return false; + return true; } @Override diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/DuplicateDetectionTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/DuplicateDetectionTest.java index b8e3582ce3..b0bf5912ff 100644 --- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/DuplicateDetectionTest.java +++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/DuplicateDetectionTest.java @@ -73,11 +73,9 @@ public class DuplicateDetectionTest extends ActiveMQTestBase { }); } - @Parameter(index = 0) + @Parameter public boolean persistCache; - - private ActiveMQServer server; private final SimpleString propKey = SimpleString.of("propkey"); @@ -85,7 +83,7 @@ public class DuplicateDetectionTest extends ActiveMQTestBase { private final int cacheSize = 10; @TestTemplate - public void testSimpleDuplicateDetecion() throws Exception { + public void testSimpleDuplicateDetection() throws Exception { ClientSession session = sf.createSession(false, true, true); session.start(); @@ -219,6 +217,93 @@ public class DuplicateDetectionTest extends ActiveMQTestBase { assertEquals(7, message2.getObjectProperty(propKey)); } + @TestTemplate + public void testDisabledDuplicateDetectionForBridgeMessage() throws Exception { + server.stop(); + + // disable duplicate detection + config = createDefaultInVMConfig().setIDCacheSize(0); + + server = createServer(config); + + server.start(); + + sf = createSessionFactory(locator); + + ClientSession session = sf.createSession(false, true, true); + + session.start(); + + final SimpleString queueName = SimpleString.of("DuplicateDetectionBridgeTestQueue"); + + session.createQueue(QueueConfiguration.of(queueName).setDurable(false)); + + ClientProducer producer = session.createProducer(queueName); + + ClientConsumer consumer = session.createConsumer(queueName); + + ClientMessage message = createMessage(session, 0); + producer.send(message); + ClientMessage receivedMessage = consumer.receive(1000); + assertEquals(0, receivedMessage.getObjectProperty(propKey)); + + message = createMessage(session, 1); + SimpleString dupID = SimpleString.of("1q2w3e4r5t6y7u8i9o0p"); + message.putBytesProperty(Message.HDR_BRIDGE_DUPLICATE_ID, dupID.getData()); + producer.send(message); + receivedMessage = consumer.receive(1000); + assertEquals(1, receivedMessage.getObjectProperty(propKey)); + + message = createMessage(session, 2); + SimpleString dupID1 = SimpleString.of("1q2w3e4r5t6y7u8i9o0p"); + message.putBytesProperty(Message.HDR_BRIDGE_DUPLICATE_ID, dupID1.getData()); + producer.send(message); + receivedMessage = consumer.receive(1000); + assertEquals(2, receivedMessage.getObjectProperty(propKey)); + + } + + @TestTemplate + public void testEnabledDuplicateDetectionForBridgeMessage() throws Exception { + + ClientSession session = sf.createSession(false, true, true); + + session.start(); + + final SimpleString queueName = SimpleString.of("DuplicateDetectionBridge2TestQueue"); + + session.createQueue(QueueConfiguration.of(queueName).setDurable(false)); + + ClientProducer producer = session.createProducer(queueName); + + ClientConsumer consumer = session.createConsumer(queueName); + + ClientMessage message = createMessage(session, 0); + producer.send(message); + ClientMessage receivedMessage = consumer.receive(1000); + assertEquals(0, receivedMessage.getObjectProperty(propKey)); + + message = createMessage(session, 1); + SimpleString dupID = SimpleString.of("1q2w3e4r5t"); + message.putBytesProperty(Message.HDR_BRIDGE_DUPLICATE_ID, dupID.getData()); + producer.send(message); + receivedMessage = consumer.receive(1000); + assertEquals(1, receivedMessage.getObjectProperty(propKey)); + + message = createMessage(session, 2); + message.putBytesProperty(Message.HDR_BRIDGE_DUPLICATE_ID, dupID.getData()); + producer.send(message); + receivedMessage = consumer.receiveImmediate(); + assertNull(receivedMessage); + + message = createMessage(session, 3); + message.putBytesProperty(Message.HDR_BRIDGE_DUPLICATE_ID, dupID.getData()); + producer.send(message); + receivedMessage = consumer.receiveImmediate(); + assertNull(receivedMessage); + + } + @TestTemplate public void testDuplicateIDCacheMemoryRetentionForNonTemporaryQueues() throws Exception { testDuplicateIDCacheMemoryRetention(false); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
