This is an automated email from the ASF dual-hosted git repository. chibenwa pushed a commit to branch mbx-inconsistency-2 in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 5dca61f9643f67a4a260a8ab80fe2c04501086af Author: Benoit TELLIER <[email protected]> AuthorDate: Fri Jul 24 16:32:23 2026 +0200 Leverage strong consistency within SolveMailboxInconsistenciesService --- .../mailbox/cassandra/mail/CassandraMailboxPathV3DAO.java | 12 +++++++++++- .../mail/task/SolveMailboxInconsistenciesService.java | 3 ++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV3DAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV3DAO.java index 7663a18ec0..c17393c684 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV3DAO.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV3DAO.java @@ -175,7 +175,17 @@ public class CassandraMailboxPathV3DAO { } public Flux<Mailbox> listAll() { - return cassandraAsyncExecutor.executeRows(selectAll.bind()) + return listAll(JamesExecutionProfiles.ConsistencyChoice.WEAK); + } + + public Flux<Mailbox> listAll(JamesExecutionProfiles.ConsistencyChoice consistencyChoice) { + BoundStatementBuilder statementBuilder = selectAll.boundStatementBuilder(); + + if (consistencyChoice.equals(STRONG)) { + statementBuilder.setExecutionProfile(lwtProfile); + } + + return cassandraAsyncExecutor.executeRows(statementBuilder.build()) .map(this::fromRowToCassandraIdAndPath) .map(FunctionalUtils.toFunction(this::logReadSuccess)); } 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 9061e2d818..d7dd71dc53 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 @@ -30,6 +30,7 @@ import java.util.concurrent.atomic.AtomicLong; import jakarta.inject.Inject; +import org.apache.james.backends.cassandra.init.configuration.JamesExecutionProfiles; import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionManager; import org.apache.james.backends.cassandra.versions.SchemaVersion; import org.apache.james.mailbox.cassandra.ids.CassandraId; @@ -628,7 +629,7 @@ public class SolveMailboxInconsistenciesService { } private Flux<Result> processMailboxPathDaoInconsistencies(Context context, boolean autoMerge) { - return mailboxPathV3DAO.listAll() + return mailboxPathV3DAO.listAll(STRONG) .flatMap(entry -> detectMailboxPathDaoInconsistency(entry, autoMerge), DEFAULT_CONCURRENCY) .doOnNext(any -> context.incrementProcessedMailboxPathEntries()) // Detect every inconsistency first, then fix them one at a time. Resolving a same-mailbox --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
