Uploaded image for project: 'Cayenne'
  1. Cayenne
  2. CAY-1653

Improving DefaultEventManager concurrency - non-bocking DispatchQueue

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.1M3
    • 3.1B1
    • None
    • None

    Description

      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).

      Attachments

        Issue Links

          Activity

            People

              andrus Andrus Adamchik
              andrus Andrus Adamchik
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: