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 bt...@apache.org on 2020/07/03 02:04:09 UTC
[james-project] 14/15: JAMES-3265 Fix
CassandraMessageMapper::deleteMessages mailbox counters handling
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 72e489a56a899a26a84f8429ab373670dbf7612c
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Jul 2 13:27:31 2020 +0700
JAMES-3265 Fix CassandraMessageMapper::deleteMessages mailbox counters handling
This code path side effect was untested
---
.../cassandra/mail/CassandraIndexTableHandler.java | 6 +++---
.../mailbox/store/mail/model/MessageMapperTest.java | 18 ++++++++++++++++++
2 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandler.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandler.java
index 47fd1eb..c98112e 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandler.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandler.java
@@ -159,15 +159,15 @@ public class CassandraIndexTableHandler {
}
private Mono<Void> decrementCountersOnDelete(CassandraId mailboxId, Collection<MessageMetaData> metaData) {
- long seenCount = metaData.stream()
+ long unseenCount = metaData.stream()
.map(MessageMetaData::getFlags)
- .filter(flags -> flags.contains(Flags.Flag.SEEN))
+ .filter(flags -> !flags.contains(Flags.Flag.SEEN))
.count();
return mailboxCounterDAO.remove(MailboxCounters.builder()
.mailboxId(mailboxId)
.count(metaData.size())
- .unseen(seenCount)
+ .unseen(unseenCount)
.build());
}
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
index 1d44644..0d396a2 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
@@ -43,6 +43,7 @@ import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.ModSeq;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.Mailbox;
+import org.apache.james.mailbox.model.MailboxCounters;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageMetaData;
@@ -378,6 +379,23 @@ public abstract class MessageMapperTest {
}
@Test
+ void deleteMessagesShouldDecrementUnseenToOneWhenDeletingTwoUnseenMessagesOutOfThree() throws MailboxException {
+ saveMessages();
+ messageMapper.updateFlags(benwaInboxMailbox, new FlagsUpdateCalculator(new Flags(Flag.SEEN), FlagsUpdateMode.REPLACE), MessageRange.one(message2.getUid()));
+ messageMapper.updateFlags(benwaInboxMailbox, new FlagsUpdateCalculator(new Flags(Flag.SEEN), FlagsUpdateMode.REPLACE), MessageRange.one(message3.getUid()));
+ messageMapper.updateFlags(benwaInboxMailbox, new FlagsUpdateCalculator(new Flags(Flag.SEEN), FlagsUpdateMode.REPLACE), MessageRange.one(message4.getUid()));
+
+ messageMapper.deleteMessages(benwaInboxMailbox, ImmutableList.of(message1.getUid(), message2.getUid(), message3.getUid()));
+
+ assertThat(messageMapper.getMailboxCounters(benwaInboxMailbox))
+ .isEqualTo(MailboxCounters.builder()
+ .mailboxId(benwaInboxMailbox.getMailboxId())
+ .count(2)
+ .unseen(1)
+ .build());
+ }
+
+ @Test
void addShouldUpdateRecentWhenNeeded() throws MailboxException {
message1.setFlags(new Flags(Flags.Flag.RECENT));
messageMapper.add(benwaInboxMailbox, message1);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org