[
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