Class not found exception - GetStatistics w/ Clustering

I tried moving production to a two-node cluster (Openfire 3.7.1 w/ patched clustering to support Coherence 3.7, using 1.6u30 JRE), which was a hit/miss success. If I restart both nodes at the same time, I get these errors. Any ideas? My next step is to back down to Coherence 3.3.1 again and see if this is reproducable with that release.

2012-02-19 08:48:01.891/28.622 Oracle Coherence GE 3.7.1.0 (thread=Invoc

ation:OpenFire Cluster Service, member=2): Failure to deserialize an Invocable o

bject: java.io.IOException: readObject failed: java.lang.ClassNotFoundException:

org.jivesoftware.openfire.reporting.stats.GetStatistics

at java.net.URLClassLoader$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Unknown Source)

at java.io.ObjectInputStream.resolveClass(Unknown Source)

at com.tangosol.io.ResolvingObjectInputStream.resolveClass(ResolvingObje

ctInputStream.java:66)

at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)

at java.io.ObjectInputStream.readClassDesc(Unknown Source)

at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)

at java.io.ObjectInputStream.readObject0(Unknown Source)

at java.io.ObjectInputStream.defaultReadFields(Unknown Source)

at java.io.ObjectInputStream.readSerialData(Unknown Source)

at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)

at java.io.ObjectInputStream.readObject0(Unknown Source)

at java.io.ObjectInputStream.readObject(Unknown Source)

at com.tangosol.util.ExternalizableHelper.readSerializable(Externalizabl

eHelper.java:2217)

at com.tangosol.util.ExternalizableHelper.readObjectInternal(Externaliza

bleHelper.java:2348)

at com.tangosol.util.ExternalizableHelper.readObject(ExternalizableHelpe

r.java:2291)

at com.tangosol.io.DefaultSerializer.deserialize(DefaultSerializer.java:

at com.tangosol.coherence.component.util.daemon.queueProcessor.Service.r

eadObject(Service.CDB:1)

at com.tangosol.coherence.component.net.Message.readObject(Message.CDB:1

)

at com.tangosol.coherence.component.util.daemon.queueProcessor.service.g

rid.InvocationService$InvocationRequest.read(InvocationService.CDB:8)

at com.tangosol.coherence.component.util.daemon.queueProcessor.service.G

rid.deserializeMessage(Grid.CDB:19)

at com.tangosol.coherence.component.util.daemon.queueProcessor.service.G

rid.onNotify(Grid.CDB:31)

at com.tangosol.coherence.component.util.Daemon.run(Daemon.CDB:42)

at java.lang.Thread.run(Unknown Source)

ClassLoader: com.jivesoftware.util.cache.ClusterClassLoader@1116880a

java.io.IOException: readObject failed: java.lang.ClassNotFoundException: org.ji

vesoftware.openfire.reporting.stats.GetStatistics

at java.net.URLClassLoader$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Unknown Source)

at java.io.ObjectInputStream.resolveClass(Unknown Source)

at com.tangosol.io.ResolvingObjectInputStream.resolveClass(ResolvingObje

ctInputStream.java:66)

at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)

at java.io.ObjectInputStream.readClassDesc(Unknown Source)

at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)

at java.io.ObjectInputStream.readObject0(Unknown Source)

at java.io.ObjectInputStream.defaultReadFields(Unknown Source)

at java.io.ObjectInputStream.readSerialData(Unknown Source)

at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)

at java.io.ObjectInputStream.readObject0(Unknown Source)

at java.io.ObjectInputStream.readObject(Unknown Source)

at com.tangosol.util.ExternalizableHelper.readSerializable(Externalizabl

eHelper.java:2217)

at com.tangosol.util.ExternalizableHelper.readObjectInternal(Externaliza

bleHelper.java:2348)

at com.tangosol.util.ExternalizableHelper.readObject(ExternalizableHelpe

r.java:2291)

at com.tangosol.io.DefaultSerializer.deserialize(DefaultSerializer.java:

at com.tangosol.coherence.component.util.daemon.queueProcessor.Service.r

eadObject(Service.CDB:1)

at com.tangosol.coherence.component.net.Message.readObject(Message.CDB:1

)

at com.tangosol.coherence.component.util.daemon.queueProcessor.service.g

rid.InvocationService$InvocationRequest.read(InvocationService.CDB:8)

at com.tangosol.coherence.component.util.daemon.queueProcessor.service.G

rid.deserializeMessage(Grid.CDB:19)

at com.tangosol.coherence.component.util.daemon.queueProcessor.service.G

rid.onNotify(Grid.CDB:31)

at com.tangosol.coherence.component.util.Daemon.run(Daemon.CDB:42)

at java.lang.Thread.run(Unknown Source)

ClassLoader: com.jivesoftware.util.cache.ClusterClassLoader@1116880a

at com.tangosol.util.ExternalizableHelper.readSerializable(Externalizabl

eHelper.java:2225)

at com.tangosol.util.ExternalizableHelper.readObjectInternal(Externaliza

bleHelper.java:2348)

at com.tangosol.util.ExternalizableHelper.readObject(ExternalizableHelpe

r.java:2291)

at com.tangosol.io.DefaultSerializer.deserialize(DefaultSerializer.java:

at com.tangosol.coherence.component.util.daemon.queueProcessor.Service.r

eadObject(Service.CDB:1)

at com.tangosol.coherence.component.net.Message.readObject(Message.CDB:1

)

at com.tangosol.coherence.component.util.daemon.queueProcessor.service.g

rid.InvocationService$InvocationRequest.read(InvocationService.CDB:8)

at com.tangosol.coherence.component.util.daemon.queueProcessor.service.G

rid.deserializeMessage(Grid.CDB:19)

at com.tangosol.coherence.component.util.daemon.queueProcessor.service.G

rid.onNotify(Grid.CDB:31)

at com.tangosol.coherence.component.util.Daemon.run(Daemon.CDB:42)

at java.lang.Thread.run(Unknown Source)

Starting Monitoring Plugin

I was able to reproduce this using Coherence 3.3.1 and the regular 1.2.1_beta clustering plugin. It seems to only happen if I start both instances at exactly the same time - If I want for one to come up all the way, then start the second, it does not generate an error.