You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ma...@apache.org on 2017/08/17 11:20:14 UTC
[2/4] james-project git commit: JAMES-2123 Avoid a read before
deleting out messages
JAMES-2123 Avoid a read before deleting 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/219eb4ec
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/219eb4ec
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/219eb4ec
Branch: refs/heads/master
Commit: 219eb4ec2c2b01b876682b645a719c5d9a9298d0
Parents: c3bae34
Author: benwa <bt...@linagora.com>
Authored: Thu Aug 17 08:48:14 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Aug 17 11:05:02 2017 +0700
----------------------------------------------------------------------
.../cassandra/mail/CassandraMessageMapper.java | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/219eb4ec/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 0bad299..837a94d 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
@@ -151,10 +151,13 @@ public class CassandraMessageMapper implements MessageMapper {
}
private CompletableFuture<Void> deleteAsFuture(MailboxMessage message, CassandraId mailboxId) {
- return messageIdDAO.retrieve(mailboxId, message.getUid())
- .thenCompose(optional -> optional
- .map(this::deleteUsingMailboxId)
- .orElse(CompletableFuture.completedFuture(null)));
+ ComposedMessageIdWithMetaData composedMessageIdWithMetaData = ComposedMessageIdWithMetaData.builder()
+ .composedMessageId(new ComposedMessageId(mailboxId, message.getMessageId(), message.getUid()))
+ .flags(message.createFlags())
+ .modSeq(message.getModSeq())
+ .build();
+
+ return deleteUsingMailboxId(composedMessageIdWithMetaData);
}
private CompletableFuture<Void> deleteUsingMailboxId(ComposedMessageIdWithMetaData composedMessageIdWithMetaData) {
@@ -168,10 +171,6 @@ public class CassandraMessageMapper implements MessageMapper {
).thenCompose(voidValue -> indexTableHandler.updateIndexOnDelete(composedMessageIdWithMetaData, mailboxId));
}
- private CompletableFuture<Optional<ComposedMessageIdWithMetaData>> retrieveMessageId(CassandraId mailboxId, MailboxMessage message) {
- return messageIdDAO.retrieve(mailboxId, message.getUid());
- }
-
@Override
public Iterator<MailboxMessage> findInMailbox(Mailbox mailbox, MessageRange messageRange, FetchType ftype, int max) throws MailboxException {
CassandraId mailboxId = (CassandraId) mailbox.getMailboxId();
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org