-
Bug
-
Resolution: Done
-
Major
-
3.0.2
MessageDispatcher.cast() synchronizes on members and copies it to a local collection if null is passed in as your destination list. This is a contention point if you have many concurrent threads attempting to cast() to the entire cluster, as they start queueing up at this point.
Guarding members with a ReadWriteLock is probably a better approach, allowing members to be read safely and concurrently.
However, since members is protected, I am not sure of the implications around this. But then again, there is no guarantee that subclasses/extensions synchronize on members anyway.