JAMES-1925 Parallelize deleting old path & saving mailbox
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/7f6f7082 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/7f6f7082 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/7f6f7082 Branch: refs/heads/master Commit: 7f6f70823f8981c04baab7759327890b82aae71e Parents: 8e9e40a Author: Luc DUZAN <[email protected]> Authored: Wed Feb 15 12:15:37 2017 +0100 Committer: Antoine Duprat <[email protected]> Committed: Wed Feb 15 14:34:15 2017 +0100 ---------------------------------------------------------------------- .../cassandra/mail/CassandraMailboxMapper.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/7f6f7082/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java index 9ad665a..6662aef 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java @@ -133,10 +133,17 @@ public class CassandraMailboxMapper implements MailboxMapper { .thenCompose(result -> { if (result) { return mailboxDAO.retrieveMailbox(cassandraId) - .thenCompose(optional -> optional - .map(storedMailbox -> mailboxPathDAO.delete(storedMailbox.generateAssociatedPath())) - .orElse(CompletableFuture.completedFuture(null))) - .thenCompose(any -> mailboxDAO.save(cassandraMailbox).thenApply(_any -> result)); + .thenCompose(optional -> { + CompletableFuture<Void> delete = optional + .map(storedMailbox -> mailboxPathDAO + .delete(storedMailbox.generateAssociatedPath()) + ) + .orElse(CompletableFuture.completedFuture(null)); + + CompletableFuture<Void> save = mailboxDAO.save(cassandraMailbox); + + return CompletableFuture.allOf(delete, save).thenApply(any -> result); + }); } return CompletableFuture.completedFuture(result); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
