You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2026/07/24 14:42:38 UTC
(james-project) 01/02: Leverage strong consistency within SolveMailboxInconsistenciesService
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 <bt...@linagora.com>
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: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org