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]
