This is an automated email from the ASF dual-hosted git repository. rcordier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit b887525f6b24815abaa4db850963d5becd0d3e98 Author: Benoit Tellier <[email protected]> AuthorDate: Mon Oct 19 11:40:35 2020 +0700 JAMES-3148 Fix instability in CassandraMailboxManagerTest --- .../mailbox/cassandra/DeleteMessageListener.java | 29 ++++++++++++---------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/DeleteMessageListener.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/DeleteMessageListener.java index d4a3ea7..fa70727 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/DeleteMessageListener.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/DeleteMessageListener.java @@ -142,17 +142,20 @@ public class DeleteMessageListener implements MailboxListener.GroupMailboxListen } private Mono<Void> handleMailboxDeletion(CassandraId mailboxId) { - return messageIdDAO.retrieveMessages(mailboxId, MessageRange.all(), Limit.unlimited()) - .map(ComposedMessageIdWithMetaData::getComposedMessageId) - .concatMap(metadata -> handleMessageDeletionAsPartOfMailboxDeletion((CassandraMessageId) metadata.getMessageId(), mailboxId) - .then(imapUidDAO.delete((CassandraMessageId) metadata.getMessageId(), mailboxId)) - .then(messageIdDAO.delete(mailboxId, metadata.getUid()))) - .then(deleteAcl(mailboxId)) - .then(applicableFlagDAO.delete(mailboxId)) - .then(firstUnseenDAO.removeAll(mailboxId)) - .then(deletedMessageDAO.removeAll(mailboxId)) - .then(counterDAO.delete(mailboxId)) - .then(recentsDAO.delete(mailboxId)); + int prefetch = 1; + return Flux.mergeDelayError(prefetch, + messageIdDAO.retrieveMessages(mailboxId, MessageRange.all(), Limit.unlimited()) + .map(ComposedMessageIdWithMetaData::getComposedMessageId) + .concatMap(metadata -> handleMessageDeletionAsPartOfMailboxDeletion((CassandraMessageId) metadata.getMessageId(), mailboxId) + .then(imapUidDAO.delete((CassandraMessageId) metadata.getMessageId(), mailboxId)) + .then(messageIdDAO.delete(mailboxId, metadata.getUid()))), + deleteAcl(mailboxId), + applicableFlagDAO.delete(mailboxId), + firstUnseenDAO.removeAll(mailboxId), + deletedMessageDAO.removeAll(mailboxId), + counterDAO.delete(mailboxId), + recentsDAO.delete(mailboxId)) + .then(); } private Mono<Void> handleMessageDeletion(Expunged expunged) { @@ -166,8 +169,8 @@ public class DeleteMessageListener implements MailboxListener.GroupMailboxListen private Mono<Void> deleteAcl(CassandraId mailboxId) { return aclMapper.getACL(mailboxId) - .flatMap(acl -> rightsDAO.update(mailboxId, ACLDiff.computeDiff(acl, MailboxACL.EMPTY))) - .then(aclMapper.delete(mailboxId)); + .flatMap(acl -> rightsDAO.update(mailboxId, ACLDiff.computeDiff(acl, MailboxACL.EMPTY)) + .then(aclMapper.delete(mailboxId))); } private Mono<Void> handleMessageDeletion(CassandraMessageId messageId) { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
