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 4e581f2f41b88a505852177c635a624fdcca36bf Author: Benoit Tellier <[email protected]> AuthorDate: Tue Mar 31 11:11:30 2020 +0700 [Performance] Enhance SelectProcessor performances Using GlowRoot, a huge amount of time is used getting mailbox information We can reasonably expect from it a 8% execution time reduction Query Time Count SELECT messageId,mailboxId,uid,modSeq,flagAnswered,flagDeleted,flagDraft,flagFlagge... 7,068.1 599 SELECT namespace,user,mailboxName,mailboxId FROM mailboxPathV2 WHERE namespace=:nam... 4,489.1 1,202 SELECT acl,version FROM acl WHERE id=:id; 3,791.9 1,202 SELECT nextModseq FROM modseq WHERE mailboxId=:mailboxId; 2,847.5 936 SELECT id,mailboxbase,uidvalidity,name FROM mailbox WHERE id=:id; 2,792.2 1,202 --- .../org/apache/james/imap/processor/AbstractSelectionProcessor.java | 2 +- .../org/apache/james/imap/processor/base/SelectedMailboxImpl.java | 3 +-- .../apache/james/imap/processor/base/MailboxEventAnalyserTest.java | 2 +- .../org/apache/james/imap/processor/base/SelectedMailboxImplTest.java | 4 ++-- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java index 11edf91..affcb1e 100644 --- a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java +++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java @@ -399,7 +399,7 @@ abstract class AbstractSelectionProcessor<R extends AbstractMailboxSelectionRequ if (currentMailbox != null) { getStatusResponseFactory().untaggedOk(HumanReadableText.QRESYNC_CLOSED, ResponseCode.closed()); } - session.selected(new SelectedMailboxImpl(getMailboxManager(), eventBus, session, mailboxPath)); + session.selected(new SelectedMailboxImpl(getMailboxManager(), eventBus, session, mailbox)); sessionMailbox = session.getSelected(); diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java index 741cdb5..a8ca86f 100644 --- a/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java +++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java @@ -74,7 +74,7 @@ public class SelectedMailboxImpl implements SelectedMailbox, MailboxListener { private final Flags applicableFlags; private boolean applicableFlagsChanged; - public SelectedMailboxImpl(MailboxManager mailboxManager, EventBus eventBus, ImapSession session, MailboxPath path) throws MailboxException { + public SelectedMailboxImpl(MailboxManager mailboxManager, EventBus eventBus, ImapSession session, MessageManager messageManager) throws MailboxException { this.session = session; this.sessionId = session.getMailboxSession().getSessionId(); this.mailboxManager = mailboxManager; @@ -86,7 +86,6 @@ public class SelectedMailboxImpl implements SelectedMailbox, MailboxListener { uidMsnConverter = new UidMsnConverter(); - MessageManager messageManager = mailboxManager.getMailbox(path, mailboxSession); mailboxId = messageManager.getId(); registration = eventBus.register(this, new MailboxIdRegistrationKey(mailboxId)); diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java index 8538203..f15d929 100644 --- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java +++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java @@ -158,7 +158,7 @@ public class MailboxEventAnalyserTest { when(messageManager.getMessages(any(), any(), any())) .thenReturn(new SingleMessageResultIterator(messageResult)); - testee = new SelectedMailboxImpl(mailboxManager, eventBus, imapSession, MAILBOX_PATH); + testee = new SelectedMailboxImpl(mailboxManager, eventBus, imapSession, messageManager); } @Test diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java index 7144f3f..f93ffc3 100644 --- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java +++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java @@ -122,7 +122,7 @@ public class SelectedMailboxImplTest { mailboxManager, eventBus, imapSession, - mailboxPath); + messageManager); assertThat(selectedMailbox.getLastUid().get()).isEqualTo(EMITTED_EVENT_UID); } @@ -138,7 +138,7 @@ public class SelectedMailboxImplTest { mailboxManager, eventBus, imapSession, - mailboxPath); + messageManager); assertThat(successCount.get()) .as("Get the incremented value in case of successful event processing.") --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
