You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2021/07/13 12:21:02 UTC

[activemq-artemis] branch main updated: ARTEMIS-3383 AMQPMessage.isDurable wrongly returns false during persistent lazy reload state

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/activemq-artemis.git


The following commit(s) were added to refs/heads/main by this push:
     new ee3814d  ARTEMIS-3383 AMQPMessage.isDurable wrongly returns false during persistent lazy reload state
     new b4d4ea3  This closes #3650
ee3814d is described below

commit ee3814dbfdb4c3961e6ec6582d9902eb29f539f5
Author: Clebert Suconic <cl...@apache.org>
AuthorDate: Mon Jul 12 22:58:14 2021 -0400

    ARTEMIS-3383 AMQPMessage.isDurable wrongly returns false during persistent lazy reload state
---
 .../org/apache/activemq/artemis/protocol/amqp/broker/AMQPMessage.java | 4 +++-
 .../tests/integration/amqp/journal/AmqpJournalLoadingTest.java        | 1 +
 2 files changed, 4 insertions(+), 1 deletion(-)

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 8606429..18608d9 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
@@ -1073,7 +1073,9 @@ public abstract class AMQPMessage extends RefCountMessage implements org.apache.
       if (header != null && header .getDurable() != null) {
          return header.getDurable();
       } else {
-         return false;
+         // if header == null and scanninStatus=RELOAD_PERSISTENCE, it means the message can only be durable
+         // even though the parsing hasn't happened yet
+         return getDataScanningStatus() == MessageDataScanningStatus.RELOAD_PERSISTENCE;
       }
    }
 
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/journal/AmqpJournalLoadingTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/journal/AmqpJournalLoadingTest.java
index f6e8166..b3c334a 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/journal/AmqpJournalLoadingTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/journal/AmqpJournalLoadingTest.java
@@ -60,6 +60,7 @@ public class AmqpJournalLoadingTest extends AmqpClientTestSupport {
          Assert.assertThat(message, Matchers.instanceOf(AMQPMessage.class));
          amqpMessage = (AMQPMessage) message;
          Assert.assertEquals(AMQPMessage.MessageDataScanningStatus.RELOAD_PERSISTENCE, amqpMessage.getDataScanningStatus());
+         Assert.assertTrue(amqpMessage.isDurable());
       }
 
       AmqpClient client = createAmqpClient();