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]

Reply via email to