You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by "Benoit Tellier (Jira)" <se...@james.apache.org> on 2022/04/13 03:40:00 UTC
[jira] [Created] (JAMES-3746) IDLE mailbox listener leak
Benoit Tellier created JAMES-3746:
-------------------------------------
Summary: IDLE mailbox listener leak
Key: JAMES-3746
URL: https://issues.apache.org/jira/browse/JAMES-3746
Project: James Server
Issue Type: Improvement
Components: IMAPServer, mailbox
Affects Versions: 3.7.0
Reporter: Benoit Tellier
Fix For: master, 3.8.0
h3. What
On a production instance running James 3.7.0 I have 2900 + IDLE listeners for only 58 IMAP connections. Something is clearly wrong here!
See attached screenshot.
A code audit showed that the listener associated with IMAP IDLE is only removed when the use inputs "DONE" to close the IDLE command.
If the connection is unexpectedly dropped then the listener is never removed!
This is even more critical that this keeps the UID-MSN mapping in memory forver (!).
h3. The fix
This is fixed on master (upcoming 3.8.0) as we no longer put a distinct registration for IMAP IDLE but reuse the connection for the Selected mailbox.
Selected mailbox is cleaned up upon disconnection, deselection etc.. so we don't need to worry.
Also it puts less of a churn on RabbitMQ component as IDLE becomes essentially a hook on the SelectedMailboxImpl listener.
I propose to backport this to 3.7.1...
--
This message was sent by Atlassian Jira
(v8.20.1#820001)
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org