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]

Reply via email to