Affects Version/s: 3.1M3
Fix Version/s: 3.1B1
DefaultEventManager and related non-public classes have a bunch of synchronized methods that create problems when lots of contexts exist in the system. This task is about streamlining one important piece of this puzzle - DispatchQueue. It is a reason (not the only one unfortunately) of deadlocks described under
CAY-720, CAY-957 and CAY-1652. Also getting rid of it should in theory greatly improve performance (again - in a system with lots of committing contexts).
So switching it to concurrent collections. Specifically 'dispatchEvent' method (add/remove listener methods still require some less invasive synchronization on WeakHashMap. We may replace this one with something like com.google.common.collect.MapMaker some time later... not essential for now).
|Field||Original Value||New Value|
|Status||Open [ 1 ]||Closed [ 6 ]|
|Resolution||Fixed [ 1 ]|