This is an automated email from the ASF dual-hosted git repository.
clebertsuconic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
The following commit(s) were added to refs/heads/master by this push:
new ab7058a ARTEMIS-3118 Fix the expiration on converting from AMQP to
core
new f451c42 This closes #3457
ab7058a is described below
commit ab7058ac7531c3522bd85dd25b003ea765d45c74
Author: Domenico Francesco Bruscino <[email protected]>
AuthorDate: Wed Feb 17 17:31:04 2021 +0100
ARTEMIS-3118 Fix the expiration on converting from AMQP to core
Initialize the JMS expiration with the value calculated during the scan
of the AMQP message to avoid a different value for each conversion based
on System.currentTimeMillis() and ttl.
---
.../artemis/protocol/amqp/converter/AmqpCoreConverter.java | 4 ++++
.../artemis/protocol/amqp/broker/AMQPMessageTest.java | 13 +++++++++++++
2 files changed, 17 insertions(+)
diff --git
a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/AmqpCoreConverter.java
b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/AmqpCoreConverter.java
index e93a7bb..8071dbe 100644
---
a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/AmqpCoreConverter.java
+++
b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/AmqpCoreConverter.java
@@ -210,6 +210,10 @@ public class AmqpCoreConverter {
throw new RuntimeException("Unexpected body type: " +
body.getClass());
}
+ // Initialize the JMS expiration with the value calculated during the
scan of the AMQP message
+ // to avoid a different value for each conversion based on
System.currentTimeMillis() and ttl.
+ result.setJMSExpiration(message.getExpiration());
+
processHeader(result, header);
processMessageAnnotations(result, annotations);
processApplicationProperties(result, applicationProperties);
diff --git
a/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPMessageTest.java
b/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPMessageTest.java
index 487a19a..3eb4d23 100644
---
a/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPMessageTest.java
+++
b/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPMessageTest.java
@@ -993,6 +993,19 @@ public class AMQPMessageTest {
}
@Test
+ public void testGetExpirationFromCoreMessageUsingTTL() {
+ final long ttl = 100000;
+
+ MessageImpl protonMessage = (MessageImpl) Message.Factory.create();
+ protonMessage.setHeader(new Header());
+ protonMessage.setTtl(ttl);
+ AMQPStandardMessage decoded = encodeAndDecodeMessage(protonMessage);
+
+ ICoreMessage coreMessage = decoded.toCore();
+ assertEquals(decoded.getExpiration(), coreMessage.getExpiration());
+ }
+
+ @Test
public void testGetExpirationFromMessageUsingAbsoluteExpiration() {
final Date expirationTime = new Date(System.currentTimeMillis());