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 ad...@apache.org on 2017/01/18 07:51:58 UTC
[4/8] james-project git commit: MAILBOX-285 Correct bug on flags
update
MAILBOX-285 Correct bug on flags update
Modseq used for condition was not well retrieved
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/0944974e
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/0944974e
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/0944974e
Branch: refs/heads/master
Commit: 0944974ebac090b9cd5dd6e98f4d94babf825062
Parents: 8256ad1
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Jan 11 14:25:46 2017 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Tue Jan 17 10:44:40 2017 +0700
----------------------------------------------------------------------
.../mail/CassandraMessageIdMapper.java | 10 +--------
.../store/mail/model/MessageIdMapperTest.java | 23 ++++++++++++++++++++
2 files changed, 24 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/0944974e/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
----------------------------------------------------------------------
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 2a756cf..ea4c27d 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
@@ -222,7 +222,7 @@ public class CassandraMessageIdMapper implements MessageIdMapper {
private Pair<MailboxId, UpdatedFlags> flagsUpdateWithRetry(Flags newState, MessageManager.FlagsUpdateMode updateMode, ComposedMessageIdWithMetaData composedMessageId) {
try {
Pair<Flags, Long> newFlagsWithModSeq = new FunctionRunnerWithRetry(MAX_RETRY)
- .executeAndRetrieveObject(() -> tryFlagsUpdate(newState, updateMode, composedMessageId, oldModSeq(composedMessageId.getComposedMessageId())));
+ .executeAndRetrieveObject(() -> tryFlagsUpdate(newState, updateMode, composedMessageId, composedMessageId.getModSeq()));
return Pair.of(composedMessageId.getComposedMessageId().getMailboxId(),
new UpdatedFlags(composedMessageId.getComposedMessageId().getUid(),
newFlagsWithModSeq.getRight(),
@@ -255,14 +255,6 @@ public class CassandraMessageIdMapper implements MessageIdMapper {
return CompletableFuture.completedFuture(null);
}
- private long oldModSeq(ComposedMessageId composedMessageId) {
- try {
- return modSeqProvider.highestModSeq(mailboxSession, composedMessageId.getMailboxId());
- } catch (MailboxException e) {
- throw Throwables.propagate(e);
- }
- }
-
private Optional<Pair<Flags, Long>> tryFlagsUpdate(Flags newState, MessageManager.FlagsUpdateMode updateMode, ComposedMessageIdWithMetaData composedMessageId, long oldModSeq) {
MailboxId mailboxId = composedMessageId.getComposedMessageId().getMailboxId();
try {
http://git-wip-us.apache.org/repos/asf/james-project/blob/0944974e/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
index ebb4b92..55db651 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
@@ -549,6 +549,29 @@ public class MessageIdMapperTest<T extends MapperProvider> {
}
@ContractTest
+ public void setFlagsShouldWorkWhenCalledOnFirstMessage() throws Exception {
+ message1.setUid(mapperProvider.generateMessageUid());
+ message1.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
+ sut.save(message1);
+ message2.setUid(mapperProvider.generateMessageUid());
+ message2.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
+ sut.save(message2);
+ message3.setUid(mapperProvider.generateMessageUid());
+ message3.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
+ sut.save(message3);
+ message4.setUid(mapperProvider.generateMessageUid());
+ message4.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
+ sut.save(message4);
+
+ MessageId messageId = message1.getMessageId();
+ sut.setFlags(messageId, ImmutableList.of(message1.getMailboxId()), new Flags(Flag.ANSWERED), FlagsUpdateMode.ADD);
+
+ List<MailboxMessage> messages = sut.find(ImmutableList.of(messageId), MessageMapper.FetchType.Body);
+ assertThat(messages).hasSize(1);
+ assertThat(messages.get(0).isAnswered()).isTrue();
+ }
+
+ @ContractTest
public void countMessageShouldReturnWhenCreateNewMessage() throws Exception {
message1.setUid(mapperProvider.generateMessageUid());
message1.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org