[jboss-user] [Remoting] - Re: Messaging blocked by long time-out

thammoud do-not-reply at jboss.com
Fri Mar 13 15:24:01 EDT 2009


We are experiencing the exact same problem on Linux. This is very easy to reproduce. Have two clients running against a server and pull the network cable from one of the clients simulating a kernel death. A few seconds later, the server puts out:

anonymous wrote : 13:07:15,064 WARN  [SimpleConnectionManager] A problem has been detected with the connection to remote client 5c4o12v-svccoz-fs969gkr-1-fs96isi3-1z, jmsClientID=b1-uvp969sf-1-rkg969sf-zoccvs-v21o4c5. It is possible the client has exited without closing its connection(s) or the network has failed. All associated connection resources will be cleaned up.

If you dump the stack trace you will see:

anonymous wrote : 
  | 
  | Timer-87" Id=954 RUNNABLE (in native)
  |         at java.net.SocketOutputStream.socketWrite0(Native Method)
  |         at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
  |         at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
  |         at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
  |         at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
  |         -  locked java.io.BufferedOutputStream at 4773d99f
  |         at java.io.DataOutputStream.flush(DataOutputStream.java:106)
  |         at org.jboss.jms.wireformat.ClientDelivery.write(ClientDelivery.java:93)
  |         at org.jboss.jms.wireformat.JMSWireFormat.write(JMSWireFormat.java:237)
  |         at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.versionedWrite(MicroSocketClientInvoker.java:971)
  |         at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.transport(MicroSocketClientInvoker.java:606)
  |         at org.jboss.remoting.transport.bisocket.BisocketClientInvoker.transport(BisocketClientInvoker.java:422)
  |         at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:133)
  |         at org.jboss.remoting.Client.invoke(Client.java:1645)
  |         at org.jboss.remoting.Client.invoke(Client.java:559)
  |         at org.jboss.remoting.Client.invokeOneway(Client.java:609)
  |         at org.jboss.remoting.callback.ServerInvokerCallbackHandler.handleCallback(ServerInvokerCallbackHandler.java:826)
  |         at org.jboss.remoting.callback.ServerInvokerCallbackHandler.handleCallbackOneway(ServerInvokerCallbackHandler.java:697)
  |         at org.jboss.jms.server.endpoint.ServerSessionEndpoint.performDelivery(ServerSessionEndpoint.java:1452)
  |         at org.jboss.jms.server.endpoint.ServerSessionEndpoint.handleDelivery(ServerSessionEndpoint.java:1364)
  |         -  locked org.jboss.jms.server.endpoint.ServerSessionEndpoint at 6d47a5f
  |         at org.jboss.jms.server.endpoint.ServerConsumerEndpoint.handle(ServerConsumerEndpoint.ja

After the timeout, the server dumps:

anonymous wrote : 
  | 13:22:51,975 ERROR [SocketClientInvoker] Got marshalling exception, exiting
  | java.io.IOException: No route to host
  |         at java.net.SocketOutputStream.socketWrite0(Native Method)
  |         at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
  |         at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
  |         at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
  |         at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
  |         at java.io.DataOutputStream.flush(DataOutputStream.java:106)
  |         at org.jboss.jms.wireformat.ClientDelivery.write(ClientDelivery.java:93)
  |         at org.jboss.jms.wireformat.JMSWireFormat.write(JMSWireFormat.java:237)
  |         at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.versionedWrite(MicroSocketClientInvoker.java:971)
  |         at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.transport(MicroSocketClientInvoker.java:606)
  |         at org.jboss.remoting.transport.bisocket.BisocketClientInvoker.transport(BisocketClientInvoker.java:422)
  |         at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:133)
  |         at org.jboss.remoting.Client.invoke(Client.java:1645)
  |         at org.jboss.remoting.Client.invoke(Client.java:559)
  | 

and other clients start getting ticks.

This will not come back until the write socket times out. I believe that is a  tcp keep alive issue and on Linux it defaults to minutes. 

Is there any configuration that we can use? We do have:

 <attribute name="callbackTimeout">10000</attribute>set in our remoting-bisocket-service.xml file.

We are dead in the water in our migration effort from ActiveMQ to JBOSS messaging because of this.  Thank you for any help.



View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4217947#4217947

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4217947



More information about the jboss-user mailing list