[jboss-jira] [JBoss JIRA] (JBMESSAGING-1958) Backward compatibility issue caused by recent fixes

Yong Hao Gao (JIRA) issues at jboss.org
Wed Dec 16 08:12:00 EST 2015


Yong Hao Gao created JBMESSAGING-1958:
-----------------------------------------

             Summary: Backward compatibility issue caused by recent fixes
                 Key: JBMESSAGING-1958
                 URL: https://issues.jboss.org/browse/JBMESSAGING-1958
             Project: JBoss Messaging
          Issue Type: Bug
          Components: JMS Remoting
    Affects Versions: 1.4.8.SP11, 1.4.0.SP3.CP14
            Reporter: Yong Hao Gao
             Fix For: 1.4.0.SP3.CP15, 1.4.8.SP12


In the following Jiras:
https://issues.jboss.org/browse/JBMESSAGING-1851
https://issues.jboss.org/browse/JBMESSAGING-1876

We've added three more fields in ClientConnectionFactoryDelegate
 private long maxRetryChangeRate;
 private long retryChangeRateInterval;
 private long minTimeoutProcessTime;

This will cause backward compatibility issues when JBM server talks to old clients that are not aware of those changes. To those old clients the three fields are marshalled but never read by client. This will cause marshal problems as shown in the following example stack trace:
20:08:46,052 INFO  [MicroSocketClientInvoker] SocketClientInvoker[47f6473, bisocket://127.0.0.2:4457] got exception java.io.IOException
20:08:46,054 ERROR [SocketClientInvoker] Got marshalling exception, exiting
java.io.IOException
	at java.io.DataInputStream.readFully(DataInputStream.java:197)
	at java.io.DataInputStream.readUTF(DataInputStream.java:609)
	at java.io.DataInputStream.readUTF(DataInputStream.java:564)
	at org.jboss.messaging.util.Version.read(Version.java:251)
	at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.read(ClientConnectionFactoryDelegate.java:348)
	at org.jboss.jms.delegate.TopologyResult.read(TopologyResult.java:123)
	at org.jboss.jms.wireformat.ConnectionFactoryGetTopologyResponse.read(ConnectionFactoryGetTopologyResponse.java:70)
	at org.jboss.jms.wireformat.JMSWireFormat.read(JMSWireFormat.java:303)
	at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.versionedRead(MicroSocketClientInvoker.java:917)
	at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.transport(MicroSocketClientInvoker.java:603)
	at org.jboss.remoting.transport.bisocket.BisocketClientInvoker.transport(BisocketClientInvoker.java:422)
	at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:141)
	at org.jboss.remoting.Client.invoke(Client.java:1858)
	at org.jboss.remoting.Client.invoke(Client.java:718)
	at org.jboss.jms.client.delegate.ClientClusteredConnectionFactoryDelegate.org$jboss$jms$client$delegate$ClientClusteredConnectionFactoryDelegate$getTopology$aop(ClientClusteredConnectionFactoryDelegate.java:326)
	at org.jboss.jms.client.delegate.ClientClusteredConnectionFactoryDelegate.getTopology(ClientClusteredConnectionFactoryDelegate.java)
	at org.jboss.jms.client.delegate.ClientClusteredConnectionFactoryDelegate.establishCallback(ClientClusteredConnectionFactoryDelegate.java:105)
	at org.jboss.jms.client.delegate.ClientClusteredConnectionFactoryDelegate.readObject(ClientClusteredConnectionFactoryDelegate.java:84)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:483)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
	at java.rmi.MarshalledObject.get(MarshalledObject.java:160)
	at org.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:72)
	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:737)
	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:654)
	at javax.naming.InitialContext.lookup(InitialContext.java:417)
	at org.jms.client.JMSClient.getFactory(JMSClient.java:147)






--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the jboss-jira mailing list