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 bt...@apache.org on 2020/04/16 02:11:57 UTC

[james-project] 02/03: JAMES-3058 SolveMailboxInconbsistencies: Flux.merge leads to undeterministic results

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 4babd0b48025f2595b7e936cb21bd6a0b5170892
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Apr 14 15:08:21 2020 +0700

    JAMES-3058 SolveMailboxInconbsistencies: Flux.merge leads to undeterministic results
    
    Depending on wether for a given mailbox we fix possible inconsistencies
    by path first or by id first, the result won't be the same.
    
    Flux merge interleave publishers leading to such undeterministic results
    while Flux.concat avoid such issues.
---
 .../cassandra/mail/task/SolveMailboxInconsistenciesService.java        | 2 +-
 .../cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java    | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesService.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesService.java
index 4777ed8..5aeb181 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesService.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesService.java
@@ -368,7 +368,7 @@ public class SolveMailboxInconsistenciesService {
 
     Mono<Result> fixMailboxInconsistencies(Context context) {
         assertValidVersion();
-        return Flux.merge(
+        return Flux.concat(
                 processMailboxDaoInconsistencies(context),
                 processMailboxPathDaoInconsistencies(context))
             .reduce(Result.COMPLETED, Task::combine);
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java
index 5b9b1ec..491dce4 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java
@@ -202,6 +202,7 @@ class SolveMailboxInconsistenciesServiceTest {
         assertThat(context.snapshot())
             .isEqualTo(Context.builder()
                 .processedMailboxEntries(1)
+                .processedMailboxPathEntries(1)
                 .addFixedInconsistencies(MAILBOX.getMailboxId())
                 .build()
                 .snapshot());
@@ -253,7 +254,7 @@ class SolveMailboxInconsistenciesServiceTest {
         assertThat(context.snapshot())
             .isEqualTo(Context.builder()
                 .processedMailboxEntries(1)
-                .processedMailboxPathEntries(1)
+                .processedMailboxPathEntries(2)
                 .addFixedInconsistencies(CASSANDRA_ID_1)
                 .addConflictingEntry(ConflictingEntry.builder()
                     .mailboxDaoEntry(MAILBOX)


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