[jboss-user] [JBoss Messaging] - Timeout for Disconnected JBM Client

rtm333 do-not-reply at jboss.com
Thu Sep 11 05:22:12 EDT 2008


We are using JBM 1.4.0.SP3 on JBoss AS 4.2.2.GA, where messages generated by a Linux server are to be distributed to topic subscribers running on Windows boxes.

We are experiencing a major problem with JBoss Messaging when a consuming JBM client running on a Win XP box disappears suddenly, e.g. by Blue Screen or network disruption (as simulated by disabling the corresponding Local Area Connection in Control Panel - Network Connections). In this case it takes the JMS server 15 minutes to detect that the client is gone with a "java.io.IOException: Connection timed out". During all this time the publishing thread is blocked trying to write to the socket (see stack trace below). This also stops all message delivery to the other subscribers of this topic, what makes this a real showstopper.

We have also tried this scenario with JBM 1.4.0.SP3_CP03 with the same result. We updated to that release, because the change log mentioned JBMESSAGING-1268 that is also concerned with a similar scenario.

We tried playing with the timeout settings in remoting-bisocket-service.xml, but to no avail. Can you please explain the meaning of the attributes "timeout" and "callbackTimeout" and in what units (e.g. ms) these have to be specified? Any other ideas for a solution or workaround?

Thanks,
Ralf Torsten


Here the stack trace of the blocking publisher thread (from JBM 1.4.0.SP3_CP03):



  | "ClientPublishQ-1" daemon prio=10 tid=0x85a33400 nid=0x6364 runnable [0x84ae9000..0x84ae9e20]
  |    java.lang.Thread.State: RUNNABLE
  | 	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 <0x9eaae338> (a java.io.BufferedOutputStream)
  | 	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:418)
  | 	at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:122)
  | 	at org.jboss.remoting.Client.invoke(Client.java:1634)
  | 	at org.jboss.remoting.Client.invoke(Client.java:548)
  | 	at org.jboss.remoting.Client.invokeOneway(Client.java:598)
  | 	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:1440)
  | 	at org.jboss.jms.server.endpoint.ServerSessionEndpoint.handleDelivery(ServerSessionEndpoint.java:1352)
  | 	- locked <0x9eabf860> (a org.jboss.jms.server.endpoint.ServerSessionEndpoint)
  | 	at org.jboss.jms.server.endpoint.ServerConsumerEndpoint.handle(ServerConsumerEndpoint.java:327)
  | 	- locked <0x9ebce290> (a java.lang.Object)
  | 	at org.jboss.messaging.core.impl.RoundRobinDistributor.handle(RoundRobinDistributor.java:119)
  | 	at org.jboss.messaging.core.impl.MessagingQueue$DistributorWrapper.handle(MessagingQueue.java:583)
  | 	at org.jboss.messaging.core.impl.ClusterRoundRobinDistributor.handle(ClusterRoundRobinDistributor.java:79)
  | 	at org.jboss.messaging.core.impl.ChannelSupport.deliverInternal(ChannelSupport.java:606)
  | 	at org.jboss.messaging.core.impl.MessagingQueue.deliverInternal(MessagingQueue.java:506)
  | 	at org.jboss.messaging.core.impl.ChannelSupport.handle(ChannelSupport.java:238)
  | 	- locked <0x9ebcdf28> (a java.lang.Object)
  | 	at org.jboss.messaging.core.impl.postoffice.MessagingPostOffice.routeInternal(MessagingPostOffice.java:2208)
  | 	at org.jboss.messaging.core.impl.postoffice.MessagingPostOffice.route(MessagingPostOffice.java:494)
  | 	at org.jboss.jms.server.endpoint.ServerConnectionEndpoint.sendMessage(ServerConnectionEndpoint.java:763)
  | 	at org.jboss.jms.server.endpoint.ServerSessionEndpoint.send(ServerSessionEndpoint.java:391)
  | 	at org.jboss.jms.server.endpoint.advised.SessionAdvised.org$jboss$jms$server$endpoint$advised$SessionAdvised$send$aop(SessionAdvised.java:87)
  | 	at org.jboss.jms.server.endpoint.advised.SessionAdvised$send_7280680627620114891.invokeNext(SessionAdvised$send_7280680627620114891.java)
  | 	at org.jboss.jms.server.container.SecurityAspect.handleSend(SecurityAspect.java:157)
  | 	at sun.reflect.GeneratedMethodAccessor114.invoke(Unknown Source)
  | 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  | 	at java.lang.reflect.Method.invoke(Method.java:597)
  | 	at org.jboss.aop.advice.PerInstanceAdvice.invoke(PerInstanceAdvice.java:121)
  | 	at org.jboss.jms.server.endpoint.advised.SessionAdvised$send_7280680627620114891.invokeNext(SessionAdvised$send_7280680627620114891.java)
  | 	at org.jboss.jms.server.endpoint.advised.SessionAdvised.send(SessionAdvised.java)
  | 	at org.jboss.jms.wireformat.SessionSendRequest.serverInvoke(SessionSendRequest.java:95)
  | 	at org.jboss.jms.server.remoting.JMSServerInvocationHandler.invoke(JMSServerInvocationHandler.java:143)
  | 	at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:809)
  | 	at org.jboss.remoting.ServerInvoker$1.run(ServerInvoker.java:1761)
  | 	at org.jboss.jms.server.remoting.DirectThreadPool.run(DirectThreadPool.java:63)
  | 	at org.jboss.remoting.ServerInvoker.handleOnewayInvocation(ServerInvoker.java:1772)
  | 	at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:758)
  | 	at org.jboss.remoting.transport.local.LocalClientInvoker.invoke(LocalClientInvoker.java:101)
  | 	at org.jboss.remoting.Client.invoke(Client.java:1634)
  | 	at org.jboss.remoting.Client.invoke(Client.java:548)
  | 	at org.jboss.remoting.Client.invokeOneway(Client.java:598)
  | 	at org.jboss.remoting.Client.invokeOneway(Client.java:786)
  | 	at org.jboss.remoting.Client.invokeOneway(Client.java:776)
  | 	at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:180)
  | 	at org.jboss.jms.client.delegate.DelegateSupport.doInvokeOneway(DelegateSupport.java:165)
  | 	at org.jboss.jms.client.delegate.ClientSessionDelegate.org$jboss$jms$client$delegate$ClientSessionDelegate$send$aop(ClientSessionDelegate.java:473)
  | 	at org.jboss.jms.client.delegate.ClientSessionDelegate$send_6145266547759487588.invokeNext(ClientSessionDelegate$send_6145266547759487588.java)
  | 	at org.jboss.jms.client.container.SessionAspect.handleSend(SessionAspect.java:661)
  | 	at org.jboss.aop.advice.org.jboss.jms.client.container.SessionAspect28.invoke(SessionAspect28.java)
  | 	at org.jboss.jms.client.delegate.ClientSessionDelegate$send_6145266547759487588.invokeNext(ClientSessionDelegate$send_6145266547759487588.java)
  | 	at org.jboss.jms.client.container.FailoverValveInterceptor.invoke(FailoverValveInterceptor.java:92)
  | 	at org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:105)
  | 	at org.jboss.jms.client.delegate.ClientSessionDelegate$send_6145266547759487588.invokeNext(ClientSessionDelegate$send_6145266547759487588.java)
  | 	at org.jboss.jms.client.container.ClosedInterceptor.invoke(ClosedInterceptor.java:170)
  | 	at org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:105)
  | 	at org.jboss.jms.client.delegate.ClientSessionDelegate$send_6145266547759487588.invokeNext(ClientSessionDelegate$send_6145266547759487588.java)
  | 	at org.jboss.jms.client.delegate.ClientSessionDelegate.send(ClientSessionDelegate.java)
  | 	at org.jboss.jms.client.container.ProducerAspect.handleSend(ProducerAspect.java:269)
  | 	at org.jboss.aop.advice.org.jboss.jms.client.container.ProducerAspect39.invoke(ProducerAspect39.java)
  | 	at org.jboss.jms.client.delegate.ClientProducerDelegate$send_3961598017717988886.invokeNext(ClientProducerDelegate$send_3961598017717988886.java)
  | 	at org.jboss.jms.client.container.ClosedInterceptor.invoke(ClosedInterceptor.java:170)
  | 	at org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:105)
  | 	at org.jboss.jms.client.delegate.ClientProducerDelegate$send_3961598017717988886.invokeNext(ClientProducerDelegate$send_3961598017717988886.java)
  | 	at org.jboss.jms.client.delegate.ClientProducerDelegate.send(ClientProducerDelegate.java)
  | 	at org.jboss.jms.client.JBossMessageProducer.send(JBossMessageProducer.java:164)
  | 	at org.jboss.jms.client.JBossMessageProducer.send(JBossMessageProducer.java:207)
  | 	at org.jboss.jms.client.JBossMessageProducer.send(JBossMessageProducer.java:145)
  | 	at org.jboss.jms.client.JBossMessageProducer.send(JBossMessageProducer.java:136)
  | 	at org.jboss.jms.client.JBossMessageProducer.publish(JBossMessageProducer.java:177)
  | 

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

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



More information about the jboss-user mailing list