Repository: james-project
Updated Branches:
  refs/heads/master 6bd459a86 -> dcca8fcc8


JAMES-2123 Avoid a read before moving out messages

This read was failing in case of denormalization issues, leading to impossible 
to move messages


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/c3bae348
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/c3bae348
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/c3bae348

Branch: refs/heads/master
Commit: c3bae34853acebad589c5a9dc3a7b59a28c2fca9
Parents: 34d6302
Author: benwa <btell...@linagora.com>
Authored: Thu Aug 17 08:46:28 2017 +0700
Committer: benwa <btell...@linagora.com>
Committed: Thu Aug 17 11:04:52 2017 +0700

----------------------------------------------------------------------
 .../mailbox/cassandra/mail/CassandraMessageMapper.java | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/c3bae348/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
index e782127..0bad299 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
@@ -39,9 +39,9 @@ import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
-import org.apache.james.mailbox.cassandra.mail.utils.Limit;
 import org.apache.james.mailbox.cassandra.mail.migration.V1ToV2Migration;
 import org.apache.james.mailbox.cassandra.mail.utils.FlagsUpdateStageResult;
+import org.apache.james.mailbox.cassandra.mail.utils.Limit;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData;
@@ -246,10 +246,15 @@ public class CassandraMessageMapper implements 
MessageMapper {
     @Override
     public MessageMetaData move(Mailbox destinationMailbox, MailboxMessage 
original) throws MailboxException {
         CassandraId originalMailboxId = (CassandraId) original.getMailboxId();
+        ComposedMessageIdWithMetaData composedMessageIdWithMetaData = 
ComposedMessageIdWithMetaData.builder()
+            .composedMessageId(new ComposedMessageId(originalMailboxId, 
original.getMessageId(), original.getUid()))
+            .flags(original.createFlags())
+            .modSeq(original.getModSeq())
+            .build();
+
         MessageMetaData messageMetaData = copy(destinationMailbox, original);
-        retrieveMessageId(originalMailboxId, original)
-            .thenCompose(optional -> 
optional.map(this::deleteUsingMailboxId).orElse(CompletableFuture.completedFuture(null)))
-            .join();
+        deleteUsingMailboxId(composedMessageIdWithMetaData).join();
+
         return messageMetaData;
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to