[
https://issues.apache.org/jira/browse/JAMES-3737?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Benoit Tellier closed JAMES-3737.
---------------------------------
Resolution: Fixed
Most of the work had been done on this topic
> Reactive IMAP implementation
> ----------------------------
>
> Key: JAMES-3737
> URL: https://issues.apache.org/jira/browse/JAMES-3737
> Project: James Server
> Issue Type: Improvement
> Components: IMAPServer
> Reporter: Benoit Tellier
> Priority: Major
> Time Spent: 5h 50m
> Remaining Estimate: 0h
>
> Netty is an asynchronous IO framework yet we do not leverage its full
> potential .
> Combined with our reactive mailbox API we could leverage non blocking code
> for the IMAP protocol (for instance).
> Going reactive in IMAP have the following benefits:
> - Latency reduction
> - Threading model improvements
> - Backpressure
> I did succeed to come up with a Proof Of Concept wich achieve ~ 15% mean
> latency reduction and ~40% p99 latency reduction. By just porting to reactive
> the most used IMAP processors.
> Also I did propose a model for a progressive migration for existing
> processors: reactive and blocking processors could co-exist. The way it works
> is that :
> - Blocking processors are just wrapped into a mono
> - processing operations are subscribed on the IMAP worker thread (on which
> blocking is OK)
> In the context of a blocking processor, the behaviour is the same as before:
> blocking on the IMAP worker threads.
> In the context of reactive processor, we just subscribe the operation in the
> IMAP worker thread.
> Please note that we could then imagine getting fully rid of the IMAP worker
> thread, instead realying on (bounded) elastic scheduler for IMAP request
> processing where needed. THis would enable getting rid of a context switch
> and trigger the processing operations directly from the epoll event loop -
> this is for instance what the AWS driver does. THis would also require, to be
> effective, similar changes to be performed at the level of the IMAP request
> parsing, that *might* copy data to a file, which is blocking (large IMAP
> append).
> Further work is needed to determine if we can get rid of the IMAP worker
> threads.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]