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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
