Consultor Eletrônico



Kbase P19007: SonicMQ: java.io.InvalidClassException
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   11/10/2004
Status: Verified

FACT(s) (Environment):

SonicMQ 4.x

SYMPTOM(s):

java.io.InvalidClassException after upgrading from version 3.5

Error dispatching interbroker config event: java.io.InvalidClassException: progress.message.interbroker.UpdateBrokerEvent; Local class not compatible: stream classdesc serialVersionUID=-1024378865929747487 local class serialVersionUID=-5684325628111376645

java.io.InvalidClassException: progress.message.interbroker.UpdateBrokerEvent; Local class not compatible: stream classdesc serialVersionUID=-102437886592974748
7 local class serialVersionUID=-5684325628111376645


CAUSE:

progress.message.interbroker.UpdateBrokerEvent objects are exchanged if there are configuration changes in the interbroker configuration. Such as removing or adding
brokers to a cluster or adding a new cluster deleting a cluster etc..

If one of the slave brokers was not connected to the configuration server after the change within the interbroker configuration was done than this progress.message.interbroker.UpdateBrokerEvent objects cannot get send to that slave broker and therefor get serialized and stored in the database of the configuration server.

Upgrading under that condition will cause the configuration server to deserialize the progress.message.interbroker.UpdateBrokerEvent objects from the underlaying database after the first connect of the slave broker but the upgraded receiving slave broker will not be able to work with them because of the different serialVersionUID (indicating a different object type) and throw the exception.

FIX:

The old progress.message.interbroker.UpdateBrokerEvent get removed after sent to the slave broker from the database of the configuration server and the slave broker picks up the new configuration after a restart.

If upgrading from SonicMQ version 3.5
to SonicMQ version 4.x without changing the interbroker configuration with the old version while one of the slave brokers has not been connected to the configuration broker than there will be no problem as well.