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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
