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