Hi Jonathan,

it's probably better to put your comment in the JIRA ticket, for a
better follow up...


That being said,


Le 06/10/2017 à 20:08, Jonathan Valliere a écrit :
> I haven’t looked at the Mina code in a while.  Looking at
> DefaultIoFilterChain.java under HeadFilter#filterWrite
>
> WriteRequestQueue writeRequestQueue = s.getWriteRequestQueue();
>
>             if (!s.isWriteSuspended()) {
>                 if (writeRequestQueue.isEmpty(session)) {
>                     // We can write directly the message
>                     s.getProcessor().write(s, writeRequest);
>                 } else {
>                     s.getWriteRequestQueue().offer(s, writeRequest);
>                     s.getProcessor().flush(s);
>                 }
>             } else {
>                 s.getWriteRequestQueue().offer(s, writeRequest);
>             }
>
> Checking and working with the WriteRequestQueue is unnecessary because the
> AbstractPollingIoProcessor adds all write requests to the Queue anyway.

Those are two different queues. The HeadFilter stacks the message in a
session queue, while the AbstractPollingIoProcessor stacks the message
in the IoProcessor queue. You may have thousands of sessions but nly a
few IoProcessor which handle many sessions.
>
> Similarly, it is confusing that the HeadFilter is controlling the
> increaseScheduledWriteBytes.  This should be controlled by the
> AbstractPollingIoProcessor to ensure safety of the increase/decrease
> operations.

Again, this is a per session counter vs a per IoProcessor counter. The
application is really interested on what happens on ifself.

-- 
Emmanuel Lecharny

Symas.com
directory.apache.org

Reply via email to