diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPLargeMessage.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPLargeMessage.java index 3b1108bd1a..171a27570f 100644 --- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPLargeMessage.java +++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPLargeMessage.java @@ -141,6 +141,7 @@ public class AMQPLargeMessage extends AMQPMessage implements LargeServerMessage largeBody = new LargeBody(this, copy.largeBody.getStorageManager(), fileCopy); largeBody.setBodySize(copy.largeBody.getStoredBodySize()); this.storageManager = copy.largeBody.getStorageManager(); + this.reencoded = copy.reencoded; setMessageID(newID); } diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPMessage.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPMessage.java index 1c2103b9c0..5180130cd0 100644 --- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPMessage.java +++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPMessage.java @@ -229,6 +229,17 @@ public abstract class AMQPMessage extends RefCountMessage implements org.apache. protected AMQPMessage(AMQPMessage copy) { this(copy.messageFormat, copy.extraProperties, copy.coreMessageObjectPools); + + this.headerPosition = copy.headerPosition; + this.encodedHeaderSize = copy.encodedHeaderSize; + this.deliveryAnnotationsPosition = copy.deliveryAnnotationsPosition; + this.encodedDeliveryAnnotationsSize = copy.encodedDeliveryAnnotationsSize; + this.messageAnnotationsPosition = copy.messageAnnotationsPosition; + this.propertiesPosition = copy.propertiesPosition; + this.applicationPropertiesPosition = copy.applicationPropertiesPosition; + this.remainingBodyPosition = copy.remainingBodyPosition; + this.applicationProperties = copy.applicationProperties; + this.messageDataScanned = copy.messageDataScanned; } protected AMQPMessage(long messageFormat) { @@ -469,6 +480,7 @@ public abstract class AMQPMessage extends RefCountMessage implements org.apache. } protected ApplicationProperties lazyDecodeApplicationProperties() { + ensureMessageDataScanned(); if (applicationProperties != null || applicationPropertiesPosition == VALUE_NOT_PRESENT) { return applicationProperties; } diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/AmqpExpiredMessageTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/AmqpExpiredMessageTest.java index 52697dca0f..72d76b0f03 100644 --- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/AmqpExpiredMessageTest.java +++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/AmqpExpiredMessageTest.java @@ -713,8 +713,7 @@ public class AmqpExpiredMessageTest extends AmqpClientTestSupport { final Queue queueViewAfterRestart = getProxyToQueue(getQueueName()); Wait.assertEquals(2, queueViewAfterRestart::getMessageCount); - - Thread.sleep(1000); + Wait.assertTrue(server::isActive); linkedListIterator = queueViewAfterRestart.iterator(); count = 0;