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