Github user danny0405 commented on a diff in the pull request:

    https://github.com/apache/storm/pull/2800#discussion_r212800719
  
    --- Diff: storm-client/src/jvm/org/apache/storm/stats/StatsUtil.java ---
    @@ -1525,27 +1528,24 @@ public static ComponentPageInfo aggCompExecsStats(
          * @param timeout       timeout
          * @return a HashMap of updated executor heart beats
          */
    -    public static Map<List<Integer>, Map<String, Object>> 
updateHeartbeatCacheFromZkHeartbeat(Map<List<Integer>, Map<String, Object>> 
cache,
    -                                                                           
                   Map<List<Integer>, Map<String, Object>>
    -                                                                           
                       executorBeats,
    -                                                                           
                   Set<List<Integer>> executors,
    -                                                                           
                   Integer timeout) {
    -        Map<List<Integer>, Map<String, Object>> ret = new HashMap<>();
    -        if (cache == null && executorBeats == null) {
    -            return ret;
    -        }
    -
    +    public static ConcurrentMap<List<Integer>, Map<String, Object>> 
updateHeartbeatCacheFromZkHeartbeat(Map<List<Integer>, Map<String, Object>> 
cache,
    +                                                                           
                             Map<List<Integer>, Map<String, Object>>
    +                                                                           
                                     executorBeats,
    +                                                                           
                             Set<List<Integer>> executors,
    +                                                                           
                             Integer timeout) {
             if (cache == null) {
    +            if (executorBeats == null) {
    --- End diff --
    
    Sorry, i did see any reason why this method is not thread safe, cause it 
almost a tool method, only to initialize a Map cache which is updated into 
`Nimbus` heartbeatsCache through `heartbeatsCache.getAndUpdate(new 
Assoc<>(topoId, cache))`,` ConcurrentModificationException` happens when we 
iterate over a collection through iterator and also modify it, but here, we 
only iterate the executor list and do not modify any of the list entry.


---

Reply via email to