Dear imap developers,

we are using James 3 trunk in production for several weeks now. Great work! The impression we got is that is already very stable at least in our use case. My personal mailbox is also running on that James IMAP server now. We are using JPA/MySQL for mail storage. I am a big fan of huge mailboxes (15000 mails/folder). After fixing three minor issues (MAILBOX-197,MAILBOX-198,IMAP-375) Thunderbird and the mailclient on my smartphone run smoothly even with those mailboxes.
There is only one thing left that bugs me: mailbox selection performance

Selecting a mailbox with 15000 mails takes 5 seconds on our server while that one has 100% CPU load. This is caused by class SelectedMailboxImpl which fetches all mails from backing store mainly to achieve the following goals:
 (a) determine applicable flags
 (b) determine highestUid
 (c) determine highestMsn (aka message count)
 (d) create and maintain a MSN<>UID mapping
As far as I can see (a),(b) and (c) could be efficiently computed by the store without fetching all mails.

Regarding (d):
I did some traces of real IMAP sessions on the TCP level. As far as I can see most modern clients (at least the clients used by me) do not use MSNs. Instead they do all the commands based on the UIDs. So perhaps the MSN<>UID mapping could be lazily created when it is used the first time (if it is used at all).

So here comes my question: Is anybody working in this area already or would it make sense if I take a deeper look at it?

Regards,

Jan-Philipp Niewerth


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to