You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ma...@apache.org on 2020/02/13 08:48:48 UTC
[james-project] 03/04: MAILBOX-396 use backoff and jitter for
cassandra uid provider
This is an automated email from the ASF dual-hosted git repository.
matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 2d8df863369d950fbed9094e9e33f4cc3d422c23
Author: Matthieu Baechler <ma...@apache.org>
AuthorDate: Wed Feb 5 17:22:10 2020 +0100
MAILBOX-396 use backoff and jitter for cassandra uid provider
---
.../apache/james/mailbox/cassandra/mail/CassandraUidProvider.java | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
index 6dd5e17..aa957be 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
@@ -29,6 +29,7 @@ import static org.apache.james.mailbox.cassandra.table.CassandraMessageUidTable.
import static org.apache.james.mailbox.cassandra.table.CassandraMessageUidTable.NEXT_UID;
import static org.apache.james.mailbox.cassandra.table.CassandraMessageUidTable.TABLE_NAME;
+import java.time.Duration;
import java.util.Optional;
import javax.inject.Inject;
@@ -47,6 +48,7 @@ import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Session;
import reactor.core.publisher.Mono;
+import reactor.core.scheduler.Schedulers;
public class CassandraUidProvider implements UidProvider {
private static final String CONDITION = "Condition";
@@ -103,11 +105,13 @@ public class CassandraUidProvider implements UidProvider {
Mono<MessageUid> updateUid = findHighestUid(cassandraId)
.flatMap(messageUid -> tryUpdateUid(cassandraId, messageUid));
+ Duration forever = Duration.ofMillis(Long.MAX_VALUE);
+ Duration firstBackoff = Duration.ofMillis(10);
return updateUid
.switchIfEmpty(tryInsert(cassandraId))
.switchIfEmpty(updateUid)
.single()
- .retry(maxUidRetries);
+ .retryBackoff(maxUidRetries, firstBackoff, forever, Schedulers.elastic());
}
@Override
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org