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/04/17 15:30:40 UTC

[james-project] 06/16: JAMES-3146 Optimize JMAP default mailbox provisionning speed

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 8920a55fa378aee7d51b1c439cad2f3dde97f167
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Sat Apr 11 12:23:53 2020 +0700

    JAMES-3146 Optimize JMAP default mailbox provisionning speed
---
 .../james/mailbox/cassandra/mail/CassandraMailboxMapper.java       | 7 +++++++
 .../java/org/apache/james/mailbox/store/StoreMailboxManager.java   | 4 ++--
 .../java/org/apache/james/mailbox/store/mail/MailboxMapper.java    | 4 ++++
 3 files changed, 13 insertions(+), 2 deletions(-)

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 5a15d9e..d408624 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
@@ -113,6 +113,13 @@ public class CassandraMailboxMapper implements MailboxMapper {
             .switchIfEmpty(fromPreviousTable(path));
     }
 
+    @Override
+    public Mono<Boolean> pathExists(MailboxPath mailboxName) {
+        return mailboxPathV2DAO.retrieveId(mailboxName)
+            .switchIfEmpty(mailboxPathDAO.retrieveId(mailboxName))
+            .hasElement();
+    }
+
     private Mono<Mailbox> fromPreviousTable(MailboxPath path) {
         return mailboxPathDAO.retrieveId(path)
             .map(CassandraIdAndPath::getCassandraId)
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
index f32d83e..4534422 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
@@ -722,8 +722,8 @@ public class StoreMailboxManager implements MailboxManager {
     @Override
     public Mono<Boolean> mailboxExists(MailboxPath mailboxPath, MailboxSession session) throws MailboxException {
         MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(session);
-        return mapper.findMailboxByPath(mailboxPath)
-            .hasElement();
+
+        return mapper.pathExists(mailboxPath);
     }
 
     /**
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MailboxMapper.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MailboxMapper.java
index 6c5e3b8..cbf5d03 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MailboxMapper.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MailboxMapper.java
@@ -64,6 +64,10 @@ public interface MailboxMapper extends Mapper {
      */
     Mono<Mailbox> findMailboxByPath(MailboxPath mailboxName);
 
+    default Mono<Boolean> pathExists(MailboxPath mailboxName) {
+        return findMailboxByPath(mailboxName).hasElement();
+    }
+
     default Mailbox findMailboxByPathBlocking(MailboxPath mailboxPath) throws MailboxException, MailboxNotFoundException {
         try {
             return findMailboxByPath(mailboxPath)


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org