tabish121 commented on code in PR #5216:
URL: https://github.com/apache/activemq-artemis/pull/5216#discussion_r1745824276
##########
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPStandardMessage.java:
##########
@@ -235,10 +239,87 @@ public void reloadPersistence(ActiveMQBuffer record,
CoreMessageObjectPools pool
// Message state is now that the underlying buffer is loaded, but the
contents not yet scanned
resetMessageData();
+ recoverHeaderDataFromEncoding();
+
modified = false;
messageDataScanned = MessageDataScanningStatus.RELOAD_PERSISTENCE.code;
}
+ private void recoverHeaderDataFromEncoding() {
+ final DecoderImpl decoder = TLSEncode.getDecoder();
+ decoder.setBuffer(data);
Review Comment:
The recover from persistence isn't reloading Header, or anything else for
that matter before adding it to the Queue as the supplied test shows. Messages
read after restart all get added as if priority was set to default as I state
in the issue if you happen to have read it.
Instead of adding a new persister to store priority as expiration is
currently stored, I am quickly scanning the header portion on reload to
reacquire the priority value in order to keep backwards compatibility. The
implementation runs without creating an GC overhead when scanning for the
Header section.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact