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]

Reply via email to