[
https://issues.apache.org/jira/browse/ARTEMIS-2490?focusedWorklogId=953020&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-953020
]
ASF GitHub Bot logged work on ARTEMIS-2490:
-------------------------------------------
Author: ASF GitHub Bot
Created on: 17/Jan/25 20:18
Start Date: 17/Jan/25 20:18
Worklog Time Spent: 10m
Work Description: tabish121 commented on code in PR #5457:
URL: https://github.com/apache/activemq-artemis/pull/5457#discussion_r1920696558
##########
artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/JournalStorageManager.java:
##########
@@ -354,12 +354,18 @@ protected LargeServerMessage parseLargeMessage(final
ActiveMQBuffer buff) throws
largeMessage.setStorageManager(this);
if
(largeMessage.toMessage().containsProperty(Message.HDR_ORIG_MESSAGE_ID)) {
- // for compatibility: couple with old behaviour, copying the old file
to avoid message loss
- long originalMessageID =
largeMessage.toMessage().getLongProperty(Message.HDR_ORIG_MESSAGE_ID);
-
SequentialFile currentFile =
createFileForLargeMessage(largeMessage.toMessage().getMessageID(), true);
if (!currentFile.exists()) {
+ // for compatibility: couple with old behaviour, copying the old
file to avoid message loss
+ String originalMessageIDString =
largeMessage.toMessage().getStringProperty(Message.HDR_ORIG_MESSAGE_ID);
+ // could have a leading "ID:", like
ID:c6e2e367-d77e-11e9-9471-005056b7cdce
Review Comment:
The comment seems to acknowledge that what follows the prefix for many of
the clients is not going to be a long but likely a UUID or something UUID like
for say OpenWire which in that case is going to throw a NumberFormatException
again only the exception is from a String without the "ID:" prefix so I'm
unclear how this really improves things?
Issue Time Tracking
-------------------
Worklog Id: (was: 953020)
Time Spent: 2h (was: 1h 50m)
> JournalStorageManager#parseLargeMessage may produce fatal issue when reading
> ORIG_ID
> ------------------------------------------------------------------------------------
>
> Key: ARTEMIS-2490
> URL: https://issues.apache.org/jira/browse/ARTEMIS-2490
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Affects Versions: 2.10.0
> Reporter: Rico Neubauer
> Priority: Major
> Labels: pull-request-available
> Time Spent: 2h
> Remaining Estimate: 0h
>
> Preface: Found the issue initially with HornetQ and Stacktrace below is from
> HornetQ, but checked Artemis and issue there exists in the same manner.
> If there is a large-message in journal, this gets parsed on startup while
> doing initialization.
> While doing that property "__AMQ_ORIG_MESSAGE_ID_" (in HornetQ "HQ" instead
> of "AMQ") is always read, _for compatibility_ according to code.
> Problem with that: In case the property does not hold a number, but sth. like
> "_ID:c6e2e3..._", then a NumberFormatException is thrown, which falls thru
> the entire initialization mechanism and leads to a non-functioning server.
> I have no idea, who sets this, but seems internally, since we have no code
> doing this. Looks like a JMS-Message-ID to me.
> Mabye this whole compatibility code is not needed anymore - cannot say
> though.
> What I would like to request:
> # Move the retrieval of the property inside the compatibility-block in
> org.apache.activemq.artemis.core.persistence.impl.journal.JournalStorageManager.parseLargeMessage
> - since it is not needed otherwise and already avoids the issue in the vast
> majority where no compatibility must be done.
> # -In addition, a check for the "ID:" prefix and removing it before parsing
> to Long.-
> Edit: Sorry that was wrong, but:
> Adding a try for parsing to Long and handling not-a-number gracefully, so
> server continues startup.
> See PR for first.
> Just fyi: the fix for HornetQ: [Github (containing wrong logic for
> parsing)|https://github.com/seeburger-ag/hornetq/commit/8ef99744f219b23d76803435201e4af33a53b3c5]
> Stacktrace (as said: based on HornetQ code, but class- and method-names are
> the same):
> {code:java}
> Failure in initialisation: java.lang.NumberFormatException: For input string:
> "ID:c6e2e367-d77e-11e9-9471-005056b7cdce"
> at
> java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
> at java.lang.Long.parseLong(Long.java:589)
> at java.lang.Long.parseLong(Long.java:631)
> at
> org.hornetq.utils.TypedProperties.getLongProperty(TypedProperties.java:330)
> at
> org.hornetq.core.message.impl.MessageImpl.getLongProperty(MessageImpl.java:762)
> at
> org.hornetq.core.persistence.impl.journal.JournalStorageManager.parseLargeMessage(JournalStorageManager.java:1764)
> at
> org.hornetq.core.persistence.impl.journal.JournalStorageManager.loadMessageJournal(JournalStorageManager.java:953)
> at
> org.hornetq.core.server.impl.HornetQServerImpl.loadJournals(HornetQServerImpl.java:1603)
> at
> org.hornetq.core.server.impl.HornetQServerImpl.initialisePart2(HornetQServerImpl.java:1445)
> at
> org.hornetq.core.server.impl.HornetQServerImpl.access$1200(HornetQServerImpl.java:138)
> at
> org.hornetq.core.server.impl.HornetQServerImpl$SharedStoreLiveActivation.run(HornetQServerImpl.java:1919)
> at
> org.hornetq.core.server.impl.HornetQServerImpl.start(HornetQServerImpl.java:366)
> at
> org.hornetq.jms.server.impl.JMSServerManagerImpl.start(JMSServerManagerImpl.java:269)
> {code}
>
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact