Uploaded image for project: 'Apache Storm'
  1. Apache Storm
  2. STORM-3339

Port all the AtomicReference to ConcurrentHashMap for Nimbus

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 2.0.0
    • Fix Version/s: None
    • Component/s: storm-core
    • Labels:
      None

      Description

      Now for many concurrent access resource in Nimbus.java, we use AtomicReference to make them multi thread safe. The resources summarized below:

      1. heartbeatsCache
      2. schedulingStartTimeNs
      3. idToSchedStatus
      4. nodeIdToResources
      5. idToWorkerResources
      6. idToExecutors

      The 1, 4, 5 and 6 may grows huge if we have hundreds of topologies on cluster, when we update AtomicReference, actually we passed in a Function and use compareAndSet to update the whole val to the new returned by the Function, in that case, we must do a reference copy and merge the changes, which seems not necessary.

      I think the reason to use AtomicReference is a legacy from old Clojure code, we can replace them totally with ConcurrentHashMap which supported better performance.

        Attachments

          Activity

            People

            • Assignee:
              danny0405 Danny Chen
              Reporter:
              danny0405 Danny Chen
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Due:
                Created:
                Updated: