[prev in list] [next in list] [prev in thread] [next in thread] 

List:       activemq-commits
Subject:    [activemq-artemis] branch main updated: ARTEMIS-3501 Added exception handling on #handleAddMessage t
From:       jbertram () apache ! org
Date:       2021-09-29 18:40:27
Message-ID: 163294082776.26043.15845480110406504082 () gitbox ! apache ! org
[Download RAW message or body]

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 <anton.roskvist@volvo.com>
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;
             }
          }
       }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic