[jboss-remoting-issues] [JBoss JIRA] Reopened: (JBREM-480) Insure reliable tests in socket invoker for unusable socket connections.

Ron Sigal (JIRA) jira-events at lists.jboss.org
Tue May 27 14:45:50 EDT 2008


     [ http://jira.jboss.com/jira/browse/JBREM-480?page=all ]

Ron Sigal reopened JBREM-480:
-----------------------------

             

> Insure reliable tests in socket invoker for unusable socket connections.
> ------------------------------------------------------------------------
>
>                 Key: JBREM-480
>                 URL: http://jira.jboss.com/jira/browse/JBREM-480
>             Project: JBoss Remoting
>          Issue Type: Feature Request
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 2.0.0.CR1 (Boon)
>            Reporter: Ron Sigal
>         Assigned To: Ron Sigal
>
> The socket invoker needs to test for unusable socket connections, on both the client and server side.  There are currently two tests in place, only one of which is correct.  On the client side, if the shouldCheckConnection flag is set, then MicroSocketClientInvoker.getPooledConnection() and SocketClientInvoker.getPooledConnection() will call ClientSocketWrapper.checkConnection(), which will call ObjectInputStream.readByte(), which throws an EOFException at end of file, i.e., when the remote endpoint closes.  If the shouldCheckConnection flag is not set, then SocketClientInvoker.getPooledConnection() will call Socket.isConnected() on its socket, and MicroSocketClientInvoker.getPooledConnection() makes no test.  In any case, Socket.isConnected() does not appear to be useful, since it seems that a Socket, once connected, never returns to a disconnected state (at least in linux and jdk 1.4).  On the server side, ServerThread.acknowledge() will call ServerSocketWrapper.checkConnection(), which behaves like ClientSocketWrapper.checkConnection(), if the shouldCheckConnection flag is set.  
> The problem on the client side is that if the performVersioning flag is set, a version byte will be read by calling InputStream.read(), which returns -1 at end of file instead of throwing EOFException.  If an InputStream at end of file is not tested for end of file, -1 will be read and treated as an incorrect version. resulting in an Exception.  There needs to be an explicit test for -1.
> On the server side, a version of -1 is set to 1, and the end of file condition is caught later.  It would be simpler to test explicitly for -1.
> In any case, we need to verify that there are reliable tests in place for unusable connections.  It is difficult to see how to write a unit test that creates an error condition on a socket, but there should be unit tests for client side and server side end of file conditions.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       




More information about the jboss-remoting-issues mailing list