JMS Exceptions / Mismatch of JBossSerialization version
rtm333 Jan 9, 2007 4:47 AMDear All,
We are using JBoss 4.0.5.GA with Messaging 1.0.1.SP2. Since upgrading from Messaging 1.0.1.GA to SP2 we are experiencing rather frequent (say, every half an hour) JMS Exceptions.
Below is the log output for the following scenario: Two JBoss instances running as JMS servers (Solaris 10), two clients (on Windows XP), each client connected to one of the server instances. Both server instances are running on the same Solaris box, while both clients share a pc.
The ExceptionListener on the client end catches this exception:
instance_1:
E instance_1 09.01.2007 10:03:05.616 TopicReceiver.onException: Received JMSException for paramTopic: Throwable received from underlying connection 1 instance_1 09.01.2007 10:03:05.616 javax.jms.JMSException: Throwable received from underlying connection (Stack Trace following) javax.jms.JMSException: Throwable received from underlying connection at org.jboss.jms.client.container.ConnectionAspect.handleConnectionException(ConnectionAspect.java:203) at org.jboss.remoting.ConnectionValidator$1.run(ConnectionValidator.java:139) E instance_1 09.01.2007 10:03:07.116 TopicReceiver.onException: Received JMSException for priceTopic: Throwable received from underlying connection 1 instance_1 09.01.2007 10:03:07.116 javax.jms.JMSException: Throwable received from underlying connection (Stack Trace following) javax.jms.JMSException: Throwable received from underlying connection at org.jboss.jms.client.container.ConnectionAspect.handleConnectionException(ConnectionAspect.java:203) at org.jboss.remoting.ConnectionValidator$1.run(ConnectionValidator.java:139)
instance_2:
E instance_2 09.01.2007 10:03:05.663 TopicReceiver.onException: Received JMSException for priceTopic: Throwable received from underlying connection 1 instance_2 09.01.2007 10:03:05.663 javax.jms.JMSException: Throwable received from underlying connection (Stack Trace following) javax.jms.JMSException: Throwable received from underlying connection at org.jboss.jms.client.container.ConnectionAspect.handleConnectionException(ConnectionAspect.java:203) at org.jboss.remoting.ConnectionValidator$1.run(ConnectionValidator.java:139) E instance_2 09.01.2007 10:03:06.616 TopicReceiver.onException: Received JMSException for paramTopic: Throwable received from underlying connection 1 instance_2 09.01.2007 10:03:06.663 javax.jms.JMSException: Throwable received from underlying connection (Stack Trace following) javax.jms.JMSException: Throwable received from underlying connection at org.jboss.jms.client.container.ConnectionAspect.handleConnectionException(ConnectionAspect.java:203) at org.jboss.remoting.ConnectionValidator$1.run(ConnectionValidator.java:139)
Several seconds later the following messages are logged on the server side:
instance_1:
2007-01-09 10:03:11,582 ERROR [org.jboss.remoting.transport.socket.SocketServerInvoker] Failed to accept socket connection java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:494) at org.jboss.remoting.transport.socket.ServerThread.createServerSocket(ServerThread.java:216) at org.jboss.remoting.transport.socket.ServerThread.wakeup(ServerThread.java:275) at org.jboss.remoting.transport.socket.SocketServerInvoker.processInvocation(SocketServerInvoker.java:604) at org.jboss.remoting.transport.socket.SocketServerInvoker.run(SocketServerInvoker.java:515) at java.lang.Thread.run(Thread.java:595) Caused by: 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.read1(BufferedInputStream.java:256) at java.io.BufferedInputStream.read(BufferedInputStream.java:313) at java.io.FilterInputStream.read(FilterInputStream.java:90) at org.jboss.serial.io.JBossObjectInputStream.checkSignature(JBossObjectInputStream.java:110) at org.jboss.serial.io.JBossObjectInputStream.<init>(JBossObjectInputStream.java:94) at org.jboss.remoting.serialization.impl.jboss.JBossSerializationManager.createInput(JBossSerializationManager.java:59) at org.jboss.jms.server.remoting.ServerSocketWrapper.createInputStream(ServerSocketWrapper.java:110) at org.jboss.jms.client.remoting.ClientSocketWrapper.createStreams(ClientSocketWrapper.java:116) at org.jboss.jms.client.remoting.ClientSocketWrapper.<init>(ClientSocketWrapper.java:67) at org.jboss.jms.server.remoting.ServerSocketWrapper.<init>(ServerSocketWrapper.java:64) ... 9 more
instance_2:
2007-01-09 10:03:28,357 ERROR [org.jboss.remoting.transport.socket.SocketServerInvoker] Failed to accept socket connection java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedConstructorAccessor43.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:494) at org.jboss.remoting.transport.socket.ServerThread.createServerSocket(ServerThread.java:216) at org.jboss.remoting.transport.socket.ServerThread.wakeup(ServerThread.java:275) at org.jboss.remoting.transport.socket.SocketServerInvoker.processInvocation(SocketServerInvoker.java:604) at org.jboss.remoting.transport.socket.SocketServerInvoker.run(SocketServerInvoker.java:515) at java.lang.Thread.run(Thread.java:595) Caused by: 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.read1(BufferedInputStream.java:256) at java.io.BufferedInputStream.read(BufferedInputStream.java:313) at java.io.FilterInputStream.read(FilterInputStream.java:90) at org.jboss.serial.io.JBossObjectInputStream.checkSignature(JBossObjectInputStream.java:110) at org.jboss.serial.io.JBossObjectInputStream.<init>(JBossObjectInputStream.java:94) at org.jboss.remoting.serialization.impl.jboss.JBossSerializationManager.createInput(JBossSerializationManager.java:59) at org.jboss.jms.server.remoting.ServerSocketWrapper.createInputStream(ServerSocketWrapper.java:110) at org.jboss.jms.client.remoting.ClientSocketWrapper.createStreams(ClientSocketWrapper.java:116) at org.jboss.jms.client.remoting.ClientSocketWrapper.<init>(ClientSocketWrapper.java:67) at org.jboss.jms.server.remoting.ServerSocketWrapper.<init>(ServerSocketWrapper.java:64) ... 8 more 2007-01-09 10:03:58,939 ERROR [org.jboss.remoting.transport.socket.SocketServerInvoker] Failed to accept socket connection java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedConstructorAccessor43.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:494) at org.jboss.remoting.transport.socket.ServerThread.createServerSocket(ServerThread.java:216) at org.jboss.remoting.transport.socket.ServerThread.wakeup(ServerThread.java:275) at org.jboss.remoting.transport.socket.SocketServerInvoker.processInvocation(SocketServerInvoker.java:604) at org.jboss.remoting.transport.socket.SocketServerInvoker.run(SocketServerInvoker.java:515) at java.lang.Thread.run(Thread.java:595) Caused by: java.io.IOException: Mismatch version of JBossSerialization signature at org.jboss.serial.io.JBossObjectInputStream.checkSignature(JBossObjectInputStream.java:113) at org.jboss.serial.io.JBossObjectInputStream.<init>(JBossObjectInputStream.java:94) at org.jboss.remoting.serialization.impl.jboss.JBossSerializationManager.createInput(JBossSerializationManager.java:59) at org.jboss.jms.server.remoting.ServerSocketWrapper.createInputStream(ServerSocketWrapper.java:110) at org.jboss.jms.client.remoting.ClientSocketWrapper.createStreams(ClientSocketWrapper.java:116) at org.jboss.jms.client.remoting.ClientSocketWrapper.<init>(ClientSocketWrapper.java:67) at org.jboss.jms.server.remoting.ServerSocketWrapper.<init>(ServerSocketWrapper.java:64) ... 8 more
The really strange things are, that
not all instances are affected every time
not all clients are affected every time
not all JMS connections on the same client are affected every time
the version mismatch is not reported every time
depite the version mismatch (and the exceptions) JMS messages are (continued to be) received without obvious problems
not all clients are affected every time
not all JMS connections on the same client are affected every time
the version mismatch is not reported every time
depite the version mismatch (and the exceptions) JMS messages are (continued to be) received without obvious problems
The behaviour seems similar to what has been reported in
http://www.jboss.org/index.html?module=bb&op=viewtopic&t=98027
Any help welcome.