You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2020/11/04 02:16:57 UTC

[james-project] 05/09: JAMES-3409 Add a retry in MailboxPathV3Migration

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 e6cb2f70f4d7f710dde47fbdbf8b1616b736bbd2
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Nov 3 08:40:23 2020 +0700

    JAMES-3409 Add a retry in MailboxPathV3Migration
---
 .../mailbox/cassandra/mail/migration/MailboxPathV3Migration.java | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV3Migration.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV3Migration.java
index a2b9e41..7041427 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV3Migration.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV3Migration.java
@@ -20,6 +20,7 @@
 package org.apache.james.mailbox.cassandra.mail.migration;
 
 import java.time.Clock;
+import java.time.Duration;
 import java.time.Instant;
 import java.util.Optional;
 
@@ -37,6 +38,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import reactor.core.publisher.Mono;
+import reactor.core.scheduler.Schedulers;
+import reactor.util.retry.RetryBackoffSpec;
 
 public class MailboxPathV3Migration implements Migration {
 
@@ -91,6 +94,9 @@ public class MailboxPathV3Migration implements Migration {
     public static final Logger LOGGER = LoggerFactory.getLogger(MailboxPathV3Migration.class);
     public static final TaskType TYPE = TaskType.of("cassandra-mailbox-path-v3-migration");
     private static final int CONCURRENCY = 50;
+    private static final int MAX_ATTEMPTS = 3;
+    private static final Duration MIN_BACKOFF = Duration.ofSeconds(1);
+
     private final CassandraMailboxPathV2DAO daoV2;
     private final CassandraMailboxPathV3DAO daoV3;
     private final CassandraMailboxDAO mailboxDAO;
@@ -117,6 +123,9 @@ public class MailboxPathV3Migration implements Migration {
             .flatMap(mailbox -> daoV3.save(mailbox)
                 .then(daoV2.delete(idAndPath.getMailboxPath())))
             .onErrorResume(error -> handleErrorMigrate(idAndPath, error))
+            .retryWhen(RetryBackoffSpec.backoff(MAX_ATTEMPTS, MIN_BACKOFF)
+                .jitter(0.5)
+                .scheduler(Schedulers.elastic()))
             .then();
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org