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 d09f6718b9f0ece3e50ddd80e12a05a4c59fdb31
Author: Benoit Tellier <[email protected]>
AuthorDate: Sat May 8 09:48:30 2021 +0700

    [REFACTORING] Avoid a blocking modseq call upon message flags update
---
 .../mailbox/cassandra/mail/CassandraMessageIdMapper.java      | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
index 59ea987..e5db7eaf 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
@@ -49,7 +49,6 @@ import org.apache.james.mailbox.store.MailboxReactorUtils;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.MessageIdMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper.FetchType;
-import org.apache.james.mailbox.store.mail.ModSeqProvider;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.util.FunctionalUtils;
 import org.apache.james.util.ReactorUtils;
@@ -80,14 +79,14 @@ public class CassandraMessageIdMapper implements 
MessageIdMapper {
     private final CassandraMessageDAO messageDAO;
     private final CassandraMessageDAOV3 messageDAOV3;
     private final CassandraIndexTableHandler indexTableHandler;
-    private final ModSeqProvider modSeqProvider;
+    private final CassandraModSeqProvider modSeqProvider;
     private final AttachmentLoader attachmentLoader;
     private final CassandraConfiguration cassandraConfiguration;
 
     public CassandraMessageIdMapper(MailboxMapper mailboxMapper, 
CassandraMailboxDAO mailboxDAO, CassandraAttachmentMapper attachmentMapper,
                                     CassandraMessageIdToImapUidDAO imapUidDAO, 
CassandraMessageIdDAO messageIdDAO,
                                     CassandraMessageDAO messageDAO, 
CassandraMessageDAOV3 messageDAOV3, CassandraIndexTableHandler 
indexTableHandler,
-                                    ModSeqProvider modSeqProvider, 
CassandraConfiguration cassandraConfiguration) {
+                                    CassandraModSeqProvider modSeqProvider, 
CassandraConfiguration cassandraConfiguration) {
 
         this.mailboxMapper = mailboxMapper;
         this.mailboxDAO = mailboxDAO;
@@ -305,11 +304,11 @@ public class CassandraMessageIdMapper implements 
MessageIdMapper {
         if (identicalFlags(oldComposedId, newFlags)) {
             return Mono.just(Pair.of(oldComposedId.getFlags(), oldComposedId));
         } else {
-            return Mono
-                .fromCallable(() -> new ComposedMessageIdWithMetaData(
+            return modSeqProvider.nextModSeq(cassandraId)
+                .map(modSeq -> new ComposedMessageIdWithMetaData(
                     oldComposedId.getComposedMessageId(),
                     newFlags,
-                    modSeqProvider.nextModSeq(cassandraId)))
+                    modSeq))
             .flatMap(newComposedId -> updateFlags(oldComposedId, 
newComposedId));
         }
     }

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

Reply via email to