This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 24250e2c3f50a3d7c006e567787692647152919c Author: Benoit Tellier <[email protected]> AuthorDate: Sat Mar 7 13:50:11 2020 +0700 JAMES-3105 Piggy back message denormalization checks on mailbox counters recomputation We can piggy back a partial check of the message denormalization upon counter recomputation (partial because we cannot detect missing entries in the "list messages in mailbox" denormalization table) --- .../mail/task/RecomputeMailboxCountersService.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) 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 d45cb30..b057c93 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 @@ -193,6 +193,21 @@ public class RecomputeMailboxCountersService { private Flux<ComposedMessageIdWithMetaData> latestMetadata(CassandraId mailboxId, ComposedMessageIdWithMetaData message) { CassandraMessageId messageId = (CassandraMessageId) message.getComposedMessageId().getMessageId(); - return messageIdToImapUidDAO.retrieve(messageId, Optional.of(mailboxId)); + return messageIdToImapUidDAO.retrieve(messageId, Optional.of(mailboxId)) + .doOnNext(trustedMessage -> { + if (!trustedMessage.equals(message)) { + LOGGER.warn("Possible denormalization issue on {}. " + + "Mismatch between the two denormalization table. " + + "This can also be due to concurrent modifications.", + message.getComposedMessageId()); + } + }) + .switchIfEmpty(Flux.<ComposedMessageIdWithMetaData>empty() + .doOnComplete(() -> { + LOGGER.warn("Possible denormalization issue on {}. " + + "Source of truth do not contain listed entry." + + "This can also be due to concurrent modifications.", + message.getComposedMessageId()); + })); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
