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]

Reply via email to