Benoit Tellier created JAMES-3458:
-------------------------------------

             Summary: [IMAP] GetQuotaRoot commands is issuing more than 10% of 
cassandra qurey time!
                 Key: JAMES-3458
                 URL: https://issues.apache.org/jira/browse/JAMES-3458
             Project: James Server
          Issue Type: Improvement
          Components: cassandra, IMAPServer
            Reporter: Benoit Tellier
             Fix For: 3.6.0
         Attachments: Capture d’écran de 2020-11-27 10-58-05.png, Capture 
d’écran de 2020-11-27 10-58-28.png

# Why

IMAP clients performs a GETQUOTAROOT command for each mailboxes.

Untagged responses also include the actual quota; we end up because of IMAP 
design reading the quotas for each mailboxes! This is an issue eg when a given 
user have hundreds of mailboxes! (Who said IMAP is a BAD protocol?)

# How

While patching IMAP design is not doable, we can optimize our queries to reduce 
our query count: storage and count quota parts (current usage, max user 
storage, max domain storage) are hosted on the same row, that we are reading 
two times due to bad readpath design.

Unlocking grouped read for collocated data would likely make this much less of 
an issue.

**Definition of done**: GetQuotaRoot cassandra query volume should be reduced 
of 40%

Glowroot captures attached. The first shows queries executed by GetQuotaroot, 
as well as the percentage of total IMAP time spent on GetQuotaRoot queries 
resolution.

As a comparison the second capture shows all the IMAP queries being issued...

# Impact

Note that this work would also enhance slightly append speed (SMTP, IMAP 
append, etc) as quota needs to be checked, backend quota processing (quota 
updated events are less expensive to generate), and will slightly help 
regarding JMAP Mailbox/get call (which reads the quota). Though the enhancement 
would be less noticeable than for GetQuotaRoot IMAP command.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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

Reply via email to