[jboss-remoting-issues] [JBoss JIRA] (JBREM-1317) BisocketClientInvoker waits for failed clients

Ron Sigal (JIRA) jira-events at lists.jboss.org
Tue Feb 26 13:53:56 EST 2013


    [ https://issues.jboss.org/browse/JBREM-1317?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12756943#comment-12756943 ] 

Ron Sigal commented on JBREM-1317:
----------------------------------

Here's what I think should happen in the event of a Lease failure.  IIRC, JBossMessaging accesses the callback org.jboss.remoting.Client when it sets up the callback connection.  When a timed out Lease notifies its listeners, 

1. I *guess* that JBM calls Client.close()
2. Client.close() calls InvokerRegistry.destroyClientInvoker() on the callback BisocketClientInvoker
3. InvokerRegistry.destroyClientInvoker() calls MicroSocketClientInvoker.disconnect()
4. MicroSocketClientInvoker.disconnect() calls MicroRemoteClientInvoker.disconnect()
5. MicroRemoteClientInvoker.disconnect() sets the variable connected to false
6. the loop in BisocketClientInvoker.createSocket() calls MicroRemoteClientInvoker.isConnected(), gets false, and terminates.

I have verified steps 2 - 6.  So, if I'm right about step 1, everything should be fine.

                
> BisocketClientInvoker waits for failed clients
> ----------------------------------------------
>
>                 Key: JBREM-1317
>                 URL: https://issues.jboss.org/browse/JBREM-1317
>             Project: JBoss Remoting
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: callbacks
>    Affects Versions: 2.5.4.SP3
>         Environment: JBoss EAP 5.1.2
>            Reporter: Doug Grove
>            Assignee: Ron Sigal
>            Priority: Minor
>
> When a client dies or is killed, the failure is actually detected in org.jboss.remoting.transport.socket.MicroSocketClientInvoker:
> (NEW ClientSocketWrapper[Socket[addr=/10.0.0.212,port=36600,localport=4458].d3e837]) got Exception: java.io.IOException: Broken pipe
> The "Broken pipe" exception means that the client has disconnected and can not return.  This exception is treated in the code a retry-able, however.
> The code carries on, finally calling BisocketClientInvoker.createSocket().  This code then waits for a socket to appear in a list.  I can see no way for a new socket to ever appear in the list.
> This results in the code waiting for the full duration of the configured timeout.   

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jboss-remoting-issues mailing list