Getting ping timeout trying to connect to a Queue
mcgourty Jan 5, 2005 3:52 PMThe application is using a NON-Persistent Queue. After the application runs for 2-3 days we're getting
the following exception: org.jboss.mq.SpyJMSException: Exiting on IOE; - nested throwable: (java.io.EOFException)
The application has an exception listener registered and is notified of this exception.
It closes the queue and attempts to reconnect but after successfully recreating and starting the queue JBoss is reporting
the follwing exception: java.io.IOException: ping timeout. The application can never successfully reconnect to the queue.
All of the software is running in the same JVM. Running on Windows 2003
Not sure if we're correctly handling the error in our app and whether this is a defect JBossMQ.
Here are snippets from our logs:
JBoss Log
23:49:00,421 INFO [Server] Release ID: JBoss [WonderLand] 3.2.5 (build: CVSTag=JBoss_3_2_5 date=200406251954)
.
.
.
01:29:42,983 WARN [Connection] Connection failure:
org.jboss.mq.SpyJMSException: Exiting on IOE; - nested throwable: (java.io.EOFException)
at org.jboss.mq.Connection.asynchFailure(Ljava.lang.String;Ljava.lang.Exception;)V(Connection.java:429)
at org.jboss.mq.il.uil2.UILClientILService.asynchFailure(Ljava.lang.String;Ljava.lang.Throwable;)V(UILClientILService.java:145)
at org.jboss.mq.il.uil2.SocketManager$ReadTask.handleStop(Ljava.lang.String;Ljava.lang.Throwable;)V(SocketManager.java:398)
at org.jboss.mq.il.uil2.SocketManager$ReadTask.run()V(SocketManager.java:332)
at java.lang.Thread.run()V(Unknown Source)
at java.lang.Thread.startThreadFromVM(Ljava.lang.Thread;)V(Unknown Source)
Caused by: java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.readByte()B(Optimized Method)
at java.io.ObjectInputStream.readByte()B(Optimized Method)
at org.jboss.mq.il.uil2.SocketManager$ReadTask.run()V(SocketManager.java:279)
... 2 more
01:29:42,983 ERROR [TlMessageChannel] TLQueueExceptionListener onException() org.jboss.mq.SpyJMSException: Exiting on IOE; - nested throwable: (java.io.EOFException)
01:29:43,014 ERROR [TlMessageChannel] stopQConnection() exception: org.jboss.mq.SpyJMSException: Cannot disable the connection with the JMS server; - nested throwable: (java.io.IOException: Client is not connected)
01:31:05,327 WARN [Connection] Connection failure:
org.jboss.mq.SpyJMSException: Connection Failed; - nested throwable: (java.io.IOException: Client is not connected)
at org.jboss.mq.Connection.asynchFailure(Ljava.lang.String;Ljava.lang.Exception;)V(Connection.java:429)
at org.jboss.mq.Connection$PingTask.run()V(Connection.java:1378)
at EDU.oswego.cs.dl.util.concurrent.ClockDaemon$RunLoop.run()V(ClockDaemon.java:364)
at java.lang.Thread.run()V(Unknown Source)
at java.lang.Thread.startThreadFromVM(Ljava.lang.Thread;)V(Unknown Source)
Caused by: java.io.IOException: Client is not connected
at org.jboss.mq.il.uil2.SocketManager.internalSendMessage(Lorg.jboss.mq.il.uil2.msgs.BaseMsg;Z)V(Optimized Method)
at org.jboss.mq.il.uil2.SocketManager.sendReply(Lorg.jboss.mq.il.uil2.msgs.BaseMsg;)V(Optimized Method)
at org.jboss.mq.il.uil2.UILServerIL.ping(Lorg.jboss.mq.ConnectionToken;J)V(Optimized Method)
at org.jboss.mq.Connection.pingServer(J)V(Optimized Method)
at org.jboss.mq.Connection$PingTask.run()V(Connection.java:1374)
... 3 more
01:32:05,342 WARN [Connection] Connection failure:
org.jboss.mq.SpyJMSException: Connection Failed; - nested throwable: (java.io.IOException: ping timeout.)
at org.jboss.mq.Connection.asynchFailure(Ljava.lang.String;Ljava.lang.Exception;)V(Connection.java:429)
at org.jboss.mq.Connection$PingTask.run()V(Connection.java:1378)
at EDU.oswego.cs.dl.util.concurrent.ClockDaemon$RunLoop.run()V(ClockDaemon.java:364)
at java.lang.Thread.run()V(Unknown Source)
at java.lang.Thread.startThreadFromVM(Ljava.lang.Thread;)V(Unknown Source)
Caused by: java.io.IOException: ping timeout.
at org.jboss.mq.Connection$PingTask.run()V(Connection.java:1370)
... 3 more
01:33:05,342 WARN [Connection] Connection failure:
org.jboss.mq.SpyJMSException: Connection Failed; - nested throwable: (java.io.IOException: ping timeout.)
at org.jboss.mq.Connection.asynchFailure(Ljava.lang.String;Ljava.lang.Exception;)V(Connection.java:429)
at org.jboss.mq.Connection$PingTask.run()V(Connection.java:1378)
at EDU.oswego.cs.dl.util.concurrent.ClockDaemon$RunLoop.run()V(ClockDaemon.java:364)
at java.lang.Thread.run()V(Unknown Source)
at java.lang.Thread.startThreadFromVM(Ljava.lang.Thread;)V(Unknown Source)
Caused by: java.io.IOException: ping timeout.
at org.jboss.mq.Connection$PingTask.run()V(Connection.java:1370)
... 3 more
01:34:05,342 WARN [Connection] Connection failure:
org.jboss.mq.SpyJMSException: Connection Failed; - nested throwable: (java.io.IOException: ping timeout.)
at org.jboss.mq.Connection.asynchFailure(Ljava.lang.String;Ljava.lang.Exception;)V(Connection.java:429)
at org.jboss.mq.Connection$PingTask.run()V(Connection.java:1378)
at EDU.oswego.cs.dl.util.concurrent.ClockDaemon$RunLoop.run()V(ClockDaemon.java:364)
at java.lang.Thread.run()V(Unknown Source)
at java.lang.Thread.startThreadFromVM(Ljava.lang.Thread;)V(Unknown Source)
Caused by: java.io.IOException: ping timeout.
at org.jboss.mq.Connection$PingTask.run()V(Connection.java:1370)
... 3 more
01:35:05,342 WARN [Connection] Connection failure:
org.jboss.mq.SpyJMSException: Connection Failed; - nested throwable: (java.io.IOException: ping timeout.)
at org.jboss.mq.Connection.asynchFailure(Ljava.lang.String;Ljava.lang.Exception;)V(Connection.java:429)
at org.jboss.mq.Connection$PingTask.run()V(Connection.java:1378)
at EDU.oswego.cs.dl.util.concurrent.ClockDaemon$RunLoop.run()V(ClockDaemon.java:364)
at java.lang.Thread.run()V(Unknown Source)
at java.lang.Thread.startThreadFromVM(Ljava.lang.Thread;)V(Unknown Source)
Caused by: java.io.IOException: ping timeout.
at org.jboss.mq.Connection$PingTask.run()V(Connection.java:1370)
... 3 more
Application Log
2004-12-21 01:29:42,983 -0600 ERROR [TlMessageChannel] - TLQueueExceptionListener onException() org.jboss.mq.SpyJMSException: Exiting on IOE; - nested throwable: (java.io.EOFException)
2004-12-21 01:29:43,014 -0600 ERROR [TlMessageChannel] - stopQConnection() exception: org.jboss.mq.SpyJMSException: Cannot disable the connection with the JMS server; - nested throwable: (java.io.IOException: Client is not connected)
2004-12-21 01:29:43,014 -0600 INFO [TlMessageChannel] - TLQueueExceptionListener onException() starting TLQueue.....
2004-12-21 01:29:43,014 -0600 INFO [TlMessageChannel] - TLQueueExceptionListener onException() started TLQueue
Here is the relevant portion of code:
private void createTLQComponents() throws JMSException {
logger.debug("createTLQComponents() creating .....");
createQConnection();
createQSession();
createQSender();
logger.debug("createTLQComponents() created");
}
private void createQConnection() throws JMSException {
qConnection = qcf.createQueueConnection(TransactionLinkMessageServer.USER_NAME,
TransactionLinkMessageServer.PASSWORD);
qConnection.setExceptionListener(queueExceptionListener);
}
private void createQSession() throws JMSException {
qSession = qConnection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
}
private void createQSender() throws JMSException {
qSender = qSession.createSender(tlQueue);
qSender.setTimeToLive(TransactionLinkMessageServer.NEVER_EXPIRE);
qSender.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
}
private void stopConnections() {
logger.debug("stopping JMS connections .....");
stopTopicConnection();
stopQConnection();
logger.debug("stopped JMS connections");
}
private void stopQConnection() {
logger.debug("stopping Queue connections .....");
try {
qSender.close();
qSession.close();
qConnection.close();
} catch (JMSException e) {
logger.error("stopQConnection() exception: " + e);
}
logger.debug("stopped Queue connections");
}
public class TLQueueExceptionListener implements ExceptionListener {
public synchronized void onException(JMSException e) {
logger.error("TLQueueExceptionListener onException() " + e);
try {
stopQConnection();
createTLQComponents();
logger.info("TLQueueExceptionListener onException() starting TLQueue.....");
qConnection.start();
logger.info("TLQueueExceptionListener onException() started TLQueue");
} catch (JMSException e1) {
logger.error("TLQueueExceptionListener onException() " + e1);
}
}
}