Yuzhao Chen created STORM-3339:
----------------------------------

             Summary: Port all the AtomicReference to ConcurrentHashMap for 
Nimbus
                 Key: STORM-3339
                 URL: https://issues.apache.org/jira/browse/STORM-3339
             Project: Apache Storm
          Issue Type: Improvement
          Components: storm-core
    Affects Versions: 2.0.0
            Reporter: Yuzhao Chen
             Fix For: 2.0.0


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.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to