]
Bela Ban resolved JGRP-1916.
----------------------------
Resolution: Done
Thanks Dan, fixed as suggested
ConcurrentModificationException in FD_ALL
-----------------------------------------
Key: JGRP-1916
URL:
https://issues.jboss.org/browse/JGRP-1916
Project: JGroups
Issue Type: Bug
Affects Versions: 3.6.2
Reporter: Dan Berindei
Assignee: Bela Ban
Fix For: 3.6.3
When DEBUG logging is enabled, FD_ALL logs the set of suspected members without proper
synchronization. If another thread modifies the {{suspected_mbrs}} set at the same time,
it can cause a {{ConcurrentModificationException}} and the {{SUSPECT}} event will be
lost.
{noformat}
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:922)
at java.util.HashMap$KeyIterator.next(HashMap.java:956)
at java.util.AbstractCollection.toString(AbstractCollection.java:457)
at java.lang.String.valueOf(String.java:2847)
at java.lang.StringBuilder.append(StringBuilder.java:128)
at org.jgroups.protocols.FD_ALL.suspect(FD_ALL.java:368)
at org.jgroups.protocols.FD_ALL$TimeoutChecker.run(FD_ALL.java:444)
at org.jgroups.util.TimeScheduler3$Task.run(TimeScheduler3.java:287)
at org.jgroups.util.TimeScheduler3$RecurringTask.run(TimeScheduler3.java:321)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
{noformat}
I would also suggest adding a synchronized block in {{getSuspectedMembers()}}, {{init()}}
and {{stop()}}.
FD_ALL2 seems to have the same problem.