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