This is an automated email from the ASF dual-hosted git repository.
jbertram 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 919245b ARTEMIS-3501 Added exception handling on #handleAddMessage to
not stop broker from starting with currupted messages
new 98a3af8 This closes #3776
919245b is described below
commit 919245b3b3cedd64a6dd6dacd2ee7bb67a677873
Author: AntonRoskvist <[email protected]>
AuthorDate: Tue Sep 28 12:20:05 2021 +0200
ARTEMIS-3501 Added exception handling on #handleAddMessage to not stop
broker from starting with currupted messages
---
.../artemis/core/server/ActiveMQServerLogger.java | 4 +++
.../core/server/impl/PostOfficeJournalLoader.java | 29 +++++++++++++---------
2 files changed, 21 insertions(+), 12 deletions(-)
diff --git
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServerLogger.java
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServerLogger.java
index 0cfae2a..a6a7187 100644
---
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServerLogger.java
+++
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServerLogger.java
@@ -1759,6 +1759,10 @@ public interface ActiveMQServerLogger extends
BasicLogger {
@Message(id = 222303, value = "Redistribution by {0} of messageID = {1}
failed", format = Message.Format.MESSAGE_FORMAT)
void errorRedistributing(@Cause Throwable t, String queueName, long m);
+ @LogMessage(level = Logger.Level.WARN)
+ @Message(id = 222304, value = "Unable to load message from journal", format
= Message.Format.MESSAGE_FORMAT)
+ void unableToLoadMessageFromJournal(@Cause Throwable t);
+
@LogMessage(level = Logger.Level.ERROR)
@Message(id = 224000, value = "Failure in initialisation", format =
Message.Format.MESSAGE_FORMAT)
void initializationError(@Cause Throwable e);
diff --git
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/PostOfficeJournalLoader.java
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/PostOfficeJournalLoader.java
index f679188..bdb4443 100644
---
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/PostOfficeJournalLoader.java
+++
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/PostOfficeJournalLoader.java
@@ -221,23 +221,28 @@ public class PostOfficeJournalLoader implements
JournalLoader {
long currentTime = System.currentTimeMillis();
for (AddMessageRecord record : valueRecords) {
- long scheduledDeliveryTime = record.getScheduledDeliveryTime();
+ try {
+ long scheduledDeliveryTime = record.getScheduledDeliveryTime();
- if (scheduledDeliveryTime != 0 && scheduledDeliveryTime <=
currentTime) {
- scheduledDeliveryTime = 0;
- record.getMessage().setScheduledDeliveryTime(0L);
- }
+ if (scheduledDeliveryTime != 0 && scheduledDeliveryTime <=
currentTime) {
+ scheduledDeliveryTime = 0;
+ record.getMessage().setScheduledDeliveryTime(0L);
+ }
- if (scheduledDeliveryTime != 0) {
-
record.getMessage().setScheduledDeliveryTime(scheduledDeliveryTime);
- }
+ if (scheduledDeliveryTime != 0) {
+
record.getMessage().setScheduledDeliveryTime(scheduledDeliveryTime);
+ }
- MessageReference ref = postOffice.reload(record.getMessage(),
queue, null);
+ MessageReference ref = postOffice.reload(record.getMessage(),
queue, null);
- ref.setDeliveryCount(record.getDeliveryCount());
+ ref.setDeliveryCount(record.getDeliveryCount());
- if (scheduledDeliveryTime != 0) {
- record.getMessage().setScheduledDeliveryTime(0L);
+ if (scheduledDeliveryTime != 0) {
+ record.getMessage().setScheduledDeliveryTime(0L);
+ }
+ } catch (Throwable t) {
+ ActiveMQServerLogger.LOGGER.unableToLoadMessageFromJournal(t);
+ continue;
}
}
}