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]
