JBossMQ Remote Client receives java.io.EOFException
alchemista May 15, 2007 10:54 AMHello,
I have a pretty high traffic JBossMQ connection between an app server (JBoss 4.0.3 on Win2k3) and a logging server (JBoss 4.0.2 on RHEL). By high traffic I'm referring to 1-25MB per minute.
I occasionally have connection problems between the Win2k3 machine and RHEL machine, but most often this problem is on the JBossMQ connection.
On the client side, the error I receive is:
org.jboss.mq.SpyJMSException: Exiting on IOE; - nested throwable: (java.io.EOFException) at org.jboss.mq.SpyJMSException.getAsJMSException(SpyJMSException.java:66) at org.jboss.mq.Connection.asynchFailure(Connection.java:437) at org.jboss.mq.il.uil2.UILClientILService.asynchFailure(UILClientILService.java:156) at org.jboss.mq.il.uil2.SocketManager$ReadTask.handleStop(SocketManager.java:413) at org.jboss.mq.il.uil2.SocketManager$ReadTask.run(SocketManager.java:345) at java.lang.Thread.run(Thread.java:595) Caused by: java.io.EOFException at java.io.ObjectInputStream$BlockDataInputStream.readByte(ObjectInputStream.java:2670) at java.io.ObjectInputStream.readByte(ObjectInputStream.java:864) at org.jboss.mq.il.uil2.SocketManager$ReadTask.run(SocketManager.java:290) ... 1 more
On the server, I normally receive DEBUG-level messages like:
java.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at java.io.BufferedInputStream.fill(BufferedInputStream.java:218) at java.io.BufferedInputStream.read(BufferedInputStream.java:235) at org.jboss.util.stream.NotifyingBufferedInputStream.read(NotifyingBufferedInputStream.java:67) at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2205) at java.io.ObjectInputStream$BlockDataInputStream.readBlockHeader(ObjectInputStream.java:2385) at java.io.ObjectInputStream$BlockDataInputStream.refill(ObjectInputStream.java:2452) at java.io.ObjectInputStream$BlockDataInputStream.read(ObjectInputStream.java:2524) at java.io.ObjectInputStream$BlockDataInputStream.readByte(ObjectInputStream.java:2673) at java.io.ObjectInputStream.readByte(ObjectInputStream.java:874) at org.jboss.mq.il.uil2.SocketManager$ReadTask.run(SocketManager.java:290) at java.lang.Thread.run(Thread.java:595)
or
2007-05-11 03:14:58,215 DEBUG [org.jboss.mq.il.uil2.ServerSocketManagerHandler] Exiting on IOE java.net.SocketException: Connection reset at java.net.SocketInputStream.read(SocketInputStream.java:168) at java.io.BufferedInputStream.fill(BufferedInputStream.java:218) at java.io.BufferedInputStream.read(BufferedInputStream.java:235) at org.jboss.util.stream.NotifyingBufferedInputStream.read(NotifyingBufferedInputStream.java:67) at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2205) at java.io.ObjectInputStream$BlockDataInputStream.readBlockHeader(ObjectInputStream.java:2385) at java.io.ObjectInputStream$BlockDataInputStream.refill(ObjectInputStream.java:2452) at java.io.ObjectInputStream$BlockDataInputStream.read(ObjectInputStream.java:2524) at java.io.ObjectInputStream$BlockDataInputStream.readByte(ObjectInputStream.java:2673) at java.io.ObjectInputStream.readByte(ObjectInputStream.java:874) at org.jboss.mq.il.uil2.SocketManager$ReadTask.run(SocketManager.java:290) at java.lang.Thread.run(Thread.java:595)
OR
2007-05-11 00:05:46,631 DEBUG [org.jboss.naming.NamingService] Error writing response to /192.168.0.1 java.net.SocketException: Broken pipe 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.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1682) at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1591) at java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1173) at java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1127) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079) at java.io.ObjectOutputStream.writeFatalException(ObjectOutputStream.java:1398) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:305) at org.jnp.server.Main$BootstrapRequestHandler.run(Main.java:452) at org.jboss.util.threadpool.RunnableTaskWrapper.run(RunnableTaskWrapper.java:134) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743) at java.lang.Thread.run(Thread.java:595)
I am using the default UIL2 configuration settings on the server, but have configured the MessageCache to use a high amount of memory (800/900MB), and I'm unwisely using the default HSQLDB persistence store.
My question for this post is what possible scenarios would cause the client to receive an EOFException like that? Are there any suggestions on how to diagnose this? The error doesn't mention a read timeout or ping timeout, so I haven't tried increasing these options on the server UIL2 configuration.
Thank You