[jboss-jira] [JBoss JIRA] Commented: (JBREM-732) When server terminates and has clients, when the server comes back up clients that survived, can't connect. Connection refused when trying to connect the control socket.

Jay Howell (JIRA) jira-events at lists.jboss.org
Mon Apr 9 08:55:58 EDT 2007


    [ http://jira.jboss.com/jira/browse/JBREM-732?page=comments#action_12358672 ] 
            
Jay Howell commented on JBREM-732:
----------------------------------

Per Ron Sigal
Details:  The bisocket server invoker (server side) sets up a secondary 
ServerSocket (on a random port) to create control connections, which are 
used by the callback client invoker (server side) to ask the callback 
server invoker (client side) to create connections to be used for 
sending callbacks.  When the client invoker (client side) gets connected 
to the server, it obtains the address and port of the secondary 
ServerSocket, and when it sees an attempt to register a callback 
handler, it passed the address/port to the callback server invoker so it 
can create a control connection.  When the server is restarted the 
secondary ServerSocket is recreated, typically on a new port.  This is 
no problem when the callback server invoker detects a failure on the 
control connection, since it reacquires the address and port of the 
secondary ServerSocket.  The bug lies in the fact that an existing 
bisocket client invoker can be reused to register a callback handler, at 
which point the callback server invoker attempts to contact the 
secondary ServerSocket at the old address/port.  I've changed things so 
that the address/port of the secondary ServerSocket is acquired every 
time a control connection is created.
]

I've run the server start up / shut down / restart cycle 5 times, and 
the client was able to recover the connection each time.  Since the 
failure occurs 80% of the time, I figure the odds of it not happening 5 
times in a row would be

    (1 - .8)^ 5 = .00032.

So, I'm 99.968 % convinced that the problem is fixed.  I want to create 
a unit test for the bug, run all the other bisocket unit tests.  Also, I 
see something else a little strange I want to look at.  But I think I'm 
on the right track.

> When server terminates and has clients, when the server comes back up clients that survived, can't connect.  Connection refused when trying to connect the control socket.
> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: JBREM-732
>                 URL: http://jira.jboss.com/jira/browse/JBREM-732
>             Project: JBoss Remoting
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 2.2.0.GA (Bluto)
>            Reporter: Jay Howell
>         Assigned To: Tom  Elrod
>
> A client survives a server outage.  When the server comes back up the survivor client tries to re-establish communictions and can't because the server is refusing the control socket connections.  
> New clients are able to connect fine.  This happens intermittantly.  
> Here's the stack trace .....
> [2007-03-30 10:47:51,770 ERROR] [Thread-10] bisocket.BisocketServerInvoker - [unable to create control connection after 10 retries]
> java.net.ConnectException: Connection refused: connect
> 	at java.net.PlainSocketImpl.socketConnect(Native Method)
> 	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
> 	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
> 	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
> 	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
> 	at java.net.Socket.connect(Socket.java:519)
> 	at java.net.Socket.connect(Socket.java:469)
> 	at java.net.Socket.<init>(Socket.java:366)
> 	at java.net.Socket.<init>(Socket.java:179)
> 	at org.jboss.remoting.transport.bisocket.BisocketServerInvoker.createControlConnection(BisocketServerInvoker.java:217)
> 	at org.jboss.remoting.transport.bisocket.BisocketClientInvoker.transport(BisocketClientInvoker.java:328)
> 	at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:122)
> 	at org.jboss.remoting.Client.invoke(Client.java:1544)
> 	at org.jboss.remoting.Client.addCallbackListener(Client.java:1613)
> 	at org.jboss.remoting.Client.addListener(Client.java:907)
> 	at org.jboss.jms.client.remoting.JMSRemotingConnection.addInvokerCallbackHandler(JMSRemotingConnection.java:221)
> 	at org.jboss.jms.client.remoting.JMSRemotingConnection.start(JMSRemotingConnection.java:287)
> 	at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.org$jboss$jms$client$delegate$ClientConnectionFactoryDelegate$createConnectionDelegate$aop(ClientConnectionFactoryDelegate.java:146)
> 	at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_4579211046834694258.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_4579211046834694258.java)
> 	at org.jboss.jms.client.container.StateCreationAspect.handleCreateConnectionDelegate(StateCreationAspect.java:83)
> 	at org.jboss.aop.advice.org.jboss.jms.client.container.StateCreationAspect0.invoke(StateCreationAspect0.java)
> 	at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_4579211046834694258.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_4579211046834694258.java)
> 	at org.jboss.jms.client.container.ExceptionInterceptor.invoke(ExceptionInterceptor.java:71)
> 	at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_4579211046834694258.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_4579211046834694258.java)
> 	at org.jboss.jms.client.container.ClientLogInterceptor.invoke(ClientLogInterceptor.java:107)
> 	at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_4579211046834694258.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_4579211046834694258.java)
> 	at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.createConnectionDelegate(ClientConnectionFactoryDelegate.java)
> 	at org.jboss.jms.client.JBossConnectionFactory.createConnectionInternal(JBossConnectionFactory.java:205)
> 	at org.jboss.jms.client.JBossConnectionFactory.createConnection(JBossConnectionFactory.java:87)
> 	at org.jboss.jms.client.JBossConnectionFactory.createConnection(JBossConnectionFactory.java:82)
> 	at com.rbos.fx.eCommerce.spreading.messaging.JMSConnector.makeConnection(JMSConnector.java:166)
> 	at com.rbos.fx.eCommerce.spreading.messaging.JMSConnector.getConnection(JMSConnector.java:141)
> 	at com.rbos.fx.eCommerce.spreading.messaging.JMSConnector$JMSExceptionListener.onException(JMSConnector.java:188)
> 	at org.jboss.jms.client.remoting.ConsolidatedRemotingConnectionListener.handleConnectionException(ConsolidatedRemotingConnectionListener.java:115)
> 	at org.jboss.remoting.ConnectionValidator$1.run(ConnectionValidator.java:346)

-- 
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-jira mailing list