Details
-
Bug
-
Resolution: Done
-
Major
-
JBossAS-3.2.6 Final
-
None
Description
SourceForge Submitter: mtkopone .
Greetings all.
We stumbled upon a bug in the
JGCacheInvalidationBridge when testing cluster failover.
The replicantsChanged() method attempts removal of
dead cluster members through the DistributedState
interface, while holding on to an iterator to the map
being affected. The removal causes a
ConcurrentModificationException from ensuing calls to
the iterator.
Stack trace:
12:51:40,801 ERROR
[SaffronTESTBackPartition:ReplicantManager]
membershipChanged
failedjava.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry
(HashMap.java:762)
at java.util.HashMap$KeyIterator.next
(HashMap.java:798)
at
org.jboss.cache.invalidation.bridges.JGCacheInvalidation
Bridge.replicantsChanged
(JGCacheInvalidationBridge.java:123)
at
org.jboss.ha.framework.server.DistributedReplicantMana
gerImpl.notifyKeyListeners
(DistributedReplicantManagerImpl.java:662)
at
org.jboss.ha.framework.server.DistributedReplicantMana
gerImpl.purgeDeadMembers
(DistributedReplicantManagerImpl.java:774)
at
org.jboss.ha.framework.server.DistributedReplicantMana
gerImpl.membershipChanged
(DistributedReplicantManagerImpl.java:296)
at
org.jboss.ha.framework.server.HAPartitionImpl.viewAcce
pted(HAPartitionImpl.java:371)
at
org.javagroups.blocks.MessageDispatcher$ProtocolAda
pter.passUp(MessageDispatcher.java:488)
at org.javagroups.blocks.RequestCorrelator.receive
(RequestCorrelator.java:294)
at
org.javagroups.blocks.MessageDispatcher$ProtocolAda
pter.up(MessageDispatcher.java:513)
at org.javagroups.JChannel.up(JChannel.java:936)
at org.javagroups.stack.ProtocolStack.up
(ProtocolStack.java:301)
at
org.javagroups.stack.ProtocolStack.receiveUpEvent
(ProtocolStack.java:317)
at org.javagroups.stack.Protocol.passUp
(Protocol.java:399)
at
org.javagroups.protocols.pbcast.STATE_TRANSFER.up
(STATE_TRANSFER.java:133)
at org.javagroups.stack.UpHandler.run
(Protocol.java:50)
–
Mikko Koponen
Krocus Communications, Finland