[ 
https://issues.apache.org/jira/browse/DIRMINA-668?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12786979#action_12786979
 ] 

Emmanuel Lecharny commented on DIRMINA-668:
-------------------------------------------

The IoProcessor class inherits from the AbstractPollingIoProcessor class, which 
contains an inner class named Processor, which is responsible for handling 
incoming messages. This class implements Runnable, and call the process() 
method, which iterates on all the selected sessions, one by one, do a read() 
for each one of them, and call the filterChain.fireMessageReceived(buf) method 
if some data has been received. If yiu don't put an executor in your chain, and 
if this chain processing is costly, then the whole mchansim will wait until 
your costly handling is finished.

> Modify the way we use IoProcessors
> ----------------------------------
>
>                 Key: DIRMINA-668
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-668
>             Project: MINA
>          Issue Type: Improvement
>    Affects Versions: 2.0.0-M4
>            Reporter: Emmanuel Lecharny
>             Fix For: 3.0.0-M1
>
>
> In the current code base, when accepting new connections, we pick a processor 
> and register the news connection within the internal selector. In other 
> words, we have as many selectors as we have IoProcessors.
> This is a potential problem if some request cost a lot to be executed, as 
> every requests waiting on this IoProcessor will be blocked.
> It would be way better to use a single selector which dispatches requests to 
> an Executor, as we will always have available threads ready to process the 
> requests (unless the pool is saturated, but then we have a bigger issue ...)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to