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:45 UTC

[james-project] branch master updated (1176599 -> c6980f9)

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

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


    from 1176599  JAMES-3039: Provision a LinShare technical user within James
     new 3088552  MAILBOX-396 CassandraUidProvider doesn't need to use Mono.defer now that the executor produce lazy Monos
     new 3527208  MAILBOX-396 Use elastic scheduler in CassandraMailQueueBrowser.browseReferences
     new 2d8df86  MAILBOX-396 use backoff and jitter for cassandra uid provider
     new c6980f9  MAILBOX-396 align modseq backoff with uid provider, 2 ms is probably too fast

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../cassandra/mail/CassandraModSeqProvider.java        |  3 ++-
 .../mailbox/cassandra/mail/CassandraUidProvider.java   | 18 +++++++++++-------
 .../view/cassandra/CassandraMailQueueBrowser.java      |  2 +-
 3 files changed, 14 insertions(+), 9 deletions(-)


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


[james-project] 03/04: MAILBOX-396 use backoff and jitter for cassandra uid provider

Posted by ma...@apache.org.
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


[james-project] 04/04: MAILBOX-396 align modseq backoff with uid provider, 2 ms is probably too fast

Posted by ma...@apache.org.
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 c6980f93d53461df907a4168a8d313002a98cc25
Author: Matthieu Baechler <ma...@apache.org>
AuthorDate: Thu Feb 6 17:46:13 2020 +0100

    MAILBOX-396 align modseq backoff with uid provider, 2 ms is probably too fast
---
 .../apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java   | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java
index 2199f74..9088471 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java
@@ -186,9 +186,10 @@ public class CassandraModSeqProvider implements ModSeqProvider {
 
     private Mono<ModSeq> handleRetries(CassandraId mailboxId) {
         Duration forever = Duration.ofMillis(Long.MAX_VALUE);
+        Duration firstBackoff = Duration.ofMillis(10);
         return tryFindThenUpdateOnce(mailboxId)
             .single()
-            .retryBackoff(maxModSeqRetries, Duration.ofMillis(2), forever, Schedulers.elastic());
+            .retryBackoff(maxModSeqRetries, firstBackoff, forever, Schedulers.elastic());
     }
 
     private Mono<ModSeq> tryFindThenUpdateOnce(CassandraId mailboxId) {


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


[james-project] 01/04: MAILBOX-396 CassandraUidProvider doesn't need to use Mono.defer now that the executor produce lazy Monos

Posted by ma...@apache.org.
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 308855233ea17534974d0924b9e5e80e19a8dabd
Author: Matthieu Baechler <ma...@apache.org>
AuthorDate: Thu Jan 30 10:27:40 2020 +0100

    MAILBOX-396 CassandraUidProvider doesn't need to use Mono.defer now that the executor produce lazy Monos
---
 .../james/mailbox/cassandra/mail/CassandraUidProvider.java   | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

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 a5d9968..6dd5e17 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
@@ -117,28 +117,28 @@ public class CassandraUidProvider implements UidProvider {
     }
 
     private Mono<MessageUid> findHighestUid(CassandraId mailboxId) {
-        return Mono.defer(() -> executor.executeSingleRow(
+        return executor.executeSingleRow(
             selectStatement.bind()
                 .setUUID(MAILBOX_ID, mailboxId.asUuid())
                 .setConsistencyLevel(ConsistencyLevel.SERIAL))
-            .map(row -> MessageUid.of(row.getLong(NEXT_UID))));
+            .map(row -> MessageUid.of(row.getLong(NEXT_UID)));
     }
 
     private Mono<MessageUid> tryUpdateUid(CassandraId mailboxId, MessageUid uid) {
         MessageUid nextUid = uid.next();
-        return Mono.defer(() -> executor.executeReturnApplied(
+        return executor.executeReturnApplied(
                 updateStatement.bind()
                         .setUUID(MAILBOX_ID, mailboxId.asUuid())
                         .setLong(CONDITION, uid.asLong())
                         .setLong(NEXT_UID, nextUid.asLong()))
-                .handle((success, sink) -> successToUid(nextUid, success).ifPresent(sink::next)));
+                .handle((success, sink) -> successToUid(nextUid, success).ifPresent(sink::next));
     }
 
     private Mono<MessageUid> tryInsert(CassandraId mailboxId) {
-        return Mono.defer(() -> executor.executeReturnApplied(
+        return executor.executeReturnApplied(
             insertStatement.bind()
                 .setUUID(MAILBOX_ID, mailboxId.asUuid()))
-            .handle((success, sink) -> successToUid(MessageUid.MIN_VALUE, success).ifPresent(sink::next)));
+            .handle((success, sink) -> successToUid(MessageUid.MIN_VALUE, success).ifPresent(sink::next));
     }
 
     private Optional<MessageUid> successToUid(MessageUid uid, Boolean success) {


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


[james-project] 02/04: MAILBOX-396 Use elastic scheduler in CassandraMailQueueBrowser.browseReferences

Posted by ma...@apache.org.
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 35272085ae338053208bfe2e856167ace46e0490
Author: RĂ©mi KOWALSKI <rk...@linagora.com>
AuthorDate: Thu Jan 30 10:05:40 2020 +0100

    MAILBOX-396 Use elastic scheduler in CassandraMailQueueBrowser.browseReferences
---
 .../james/queue/rabbitmq/view/cassandra/CassandraMailQueueBrowser.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueBrowser.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueBrowser.java
index 166d956..31e448c 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueBrowser.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueBrowser.java
@@ -111,7 +111,7 @@ public class CassandraMailQueueBrowser {
         return browseStartDao.findBrowseStart(queueName)
             .flatMapMany(this::allSlicesStartingAt)
             .flatMapSequential(slice -> browseSlice(queueName, slice))
-            .subscribeOn(Schedulers.parallel());
+            .subscribeOn(Schedulers.elastic());
     }
 
     private Mono<Mail> toMailFuture(EnqueuedItemWithSlicingContext enqueuedItemWithSlicingContext) {


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