You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Carusyte (Issue Comment Edited) (JIRA)" <ji...@apache.org> on 2012/02/10 06:12:00 UTC

[jira] [Issue Comment Edited] (DIRMINA-885) session is closed before the server writes back to the client

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

Carusyte edited comment on DIRMINA-885 at 2/10/12 5:11 AM:
-----------------------------------------------------------

Thanks for the clarification. The load test I am conducting is casual, just in an attempt to confirm that my comprehension of the multi-IoProcessor model works as expected. Configuration is set to defaults, except for the bind address and number of processors (4 processors is set via the constructor method). The load generator is basically programmed using MINA's NioConnector (which is not the test tool I mentioned earlier which causes read() return -1 in the server side). 
One more thing, if I decided to use this multi-IoProcessor model, I suspect that the potential efficiency of non-blocking nio might be undermined. Furthermore, the pool of processors does not assign idle processor effectively, as the following code in SimpleIoProcessorPool (line 323) reveals:

processor = pool[Math.abs((int) session.getId()) % pool.length];

In effect, sessions waiting for an idle processor might get a busy one even if there are plenty of idle ones available in the pool.
                
      was (Author: carusyte):
    Thanks for the clarification. The load test I am conducting is casual, just in an attempt to confirmed that my comprehension of the multi-IoProcessor model works as expected. Configuration is set to defaults, except for the bind address and number of processors (4 processors is set via the constructor method). The load generator is basically programmed using MINA's NioConnector (which is not the test tool I mentioned earlier which causes read() return -1 in the server side). 
One more thing, if I decided to use this multi-IoProcessor model, I suspect that the potential efficiency of non-blocking nio might be undermined. Furthermore, the pool of processors does not assign idle processor effectively, as the following code in SimpleIoProcessorPool (line 323) reveals:

processor = pool[Math.abs((int) session.getId()) % pool.length];

In effect, sessions waiting for an idle processor might get a busy one even if there are plenty of idle ones available in the pool.
                  
> session is closed before the server writes back to the client
> -------------------------------------------------------------
>
>                 Key: DIRMINA-885
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-885
>             Project: MINA
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0.2
>         Environment: win XP, jdk 1.6.0_23
>            Reporter: Carusyte
>            Priority: Minor
>
> I am using some kind of test tool as client to send arbitrary data, my decoder and handler work correctly as expected, but MINA closes the session before my encoder is called. As I looked into the source code, AbstractPollingIoProcessor seems to schedule a session remove as long as the # of bytes read from the channel == -1 (line 673 and line 706). As per the documentation of java.nio.channels.ReadableByteChannel.read(ByteBuffer dst), this method returns -1 if the channel has reached end-of-stream, but is it really necessary to close the session even before the client receive any response? 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira