This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit fd57eb747a7d2216d6be7771a77026305c360abb
Author: Benoit Tellier <[email protected]>
AuthorDate: Thu Jul 2 10:01:01 2020 +0700

    JAMES-3290 Prevent an infinite loop when RabbitMQMailQueue message is in an 
invalid format.
    
    The relevant mail data is still stored in the MailQueue browse projection, 
preventing data loss.
---
 .../src/main/java/org/apache/james/queue/rabbitmq/Dequeuer.java     | 6 ++++--
 .../java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java | 1 -
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git 
a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/Dequeuer.java
 
b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/Dequeuer.java
index 09a3df6..bacd1ff 100644
--- 
a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/Dequeuer.java
+++ 
b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/Dequeuer.java
@@ -22,7 +22,6 @@ package org.apache.james.queue.rabbitmq;
 import static org.apache.james.queue.api.MailQueue.DEQUEUED_METRIC_NAME_PREFIX;
 
 import java.io.Closeable;
-import java.io.IOException;
 import java.util.function.Consumer;
 
 import org.apache.james.backends.rabbitmq.ReceiverProvider;
@@ -158,7 +157,10 @@ class Dequeuer implements Closeable {
     private Mono<MailReferenceDTO> toMailReference(Delivery getResponse) {
         return Mono.fromCallable(getResponse::getBody)
             
.map(Throwing.function(mailReferenceSerializer::read).sneakyThrow())
-            .onErrorResume(IOException.class, e -> Mono.error(new 
MailQueue.MailQueueException("Failed to parse DTO", e)));
+            .onErrorResume(e -> {
+                LOGGER.error("Fail to deserialize MailReferenceDTO. Discarding 
this message to prevent an infinite loop.", e);
+                return Mono.empty();
+            });
     }
 
 }
diff --git 
a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
 
b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
index 4b2bd9b..abae166 100644
--- 
a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
+++ 
b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
@@ -382,7 +382,6 @@ class RabbitMQMailQueueTest {
             assertThat(dequeuedNames).isEmpty();
         }
 
-        @Disabled("JAMES-3291 Badly formatted mailqueue causes 
RabbitMQMailQueue to crash")
         @Test
         void dequeueShouldNotAbortProcessingUponSerializationIssuesErrors() 
throws Exception {
             String name1 = "myMail1";


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to