This is an automated email from the ASF dual-hosted git repository.

chibenwa pushed a commit to branch 3.9.x
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit eda6a23eaa1182e44836d433a19df44107bc17a9
Author: Benoit TELLIER <[email protected]>
AuthorDate: Thu Jun 18 17:23:25 2026 +0200

    [FIX] Account for consistency choices within RecomputeMailboxCountersService
---
 .../mail/task/RecomputeMailboxCountersService.java      | 17 +++++++++++++++--
 .../mail/task/RecomputeMailboxCountersServiceTest.java  |  3 ++-
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/RecomputeMailboxCountersService.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/RecomputeMailboxCountersService.java
index 033e6da554..3c3c3d2e77 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/RecomputeMailboxCountersService.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/RecomputeMailboxCountersService.java
@@ -20,6 +20,7 @@
 package org.apache.james.mailbox.cassandra.mail.task;
 
 import static 
org.apache.james.backends.cassandra.init.configuration.JamesExecutionProfiles.ConsistencyChoice.STRONG;
+import static 
org.apache.james.backends.cassandra.init.configuration.JamesExecutionProfiles.ConsistencyChoice.WEAK;
 
 import java.util.Objects;
 import java.util.Optional;
@@ -29,6 +30,8 @@ import java.util.concurrent.atomic.AtomicLong;
 import jakarta.inject.Inject;
 import jakarta.mail.Flags;
 
+import 
org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
+import 
org.apache.james.backends.cassandra.init.configuration.JamesExecutionProfiles.ConsistencyChoice;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxCounterDAO;
@@ -194,16 +197,26 @@ public class RecomputeMailboxCountersService {
     private final CassandraMessageIdDAO imapUidToMessageIdDAO;
     private final CassandraMessageIdToImapUidDAO messageIdToImapUidDAO;
     private final CassandraMailboxCounterDAO counterDAO;
+    private final CassandraConfiguration cassandraConfiguration;
 
     @Inject
     RecomputeMailboxCountersService(CassandraMailboxDAO mailboxDAO,
                                     CassandraMessageIdDAO 
imapUidToMessageIdDAO,
                                     CassandraMessageIdToImapUidDAO 
messageIdToImapUidDAO,
-                                    CassandraMailboxCounterDAO counterDAO) {
+                                    CassandraMailboxCounterDAO counterDAO,
+                                    CassandraConfiguration 
cassandraConfiguration) {
         this.mailboxDAO = mailboxDAO;
         this.imapUidToMessageIdDAO = imapUidToMessageIdDAO;
         this.messageIdToImapUidDAO = messageIdToImapUidDAO;
         this.counterDAO = counterDAO;
+        this.cassandraConfiguration = cassandraConfiguration;
+    }
+
+    private ConsistencyChoice chooseReadConsistency() {
+        if (cassandraConfiguration.isMessageWriteStrongConsistency()) {
+            return STRONG;
+        }
+        return WEAK;
     }
 
     Mono<Result> recomputeMailboxCounters(Context context, Options options) {
@@ -245,7 +258,7 @@ public class RecomputeMailboxCountersService {
         }
         CassandraMessageId messageId = (CassandraMessageId) 
message.getComposedMessageId().getMessageId();
 
-        return messageIdToImapUidDAO.retrieve(messageId, 
Optional.of(mailboxId), STRONG)
+        return messageIdToImapUidDAO.retrieve(messageId, 
Optional.of(mailboxId), chooseReadConsistency())
             .map(CassandraMessageMetadata::getComposedMessageId)
             .doOnNext(trustedMessage -> {
                 if (!trustedMessage.equals(message)) {
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/RecomputeMailboxCountersServiceTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/RecomputeMailboxCountersServiceTest.java
index b76f6f09b9..40989e2cbf 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/RecomputeMailboxCountersServiceTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/RecomputeMailboxCountersServiceTest.java
@@ -58,7 +58,8 @@ class RecomputeMailboxCountersServiceTest {
             blobIdFactory, 
cassandraCluster.getCassandraConsistenciesConfiguration(),
             CassandraConfiguration.DEFAULT_CONFIGURATION);
         counterDAO = new CassandraMailboxCounterDAO(cassandra.getConf());
-        testee = new RecomputeMailboxCountersService(mailboxDAO, 
imapUidToMessageIdDAO, messageIdToImapUidDAO, counterDAO);
+        testee = new RecomputeMailboxCountersService(mailboxDAO, 
imapUidToMessageIdDAO, messageIdToImapUidDAO, counterDAO,
+            CassandraConfiguration.DEFAULT_CONFIGURATION);
     }
 
     @Test


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to