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