Github user srdo commented on the issue:
https://github.com/apache/storm/pull/2800
I don't think fixing the `executorBeats == null` branch is enough. As far
as I can tell, two supervisors/workers can be in the
https://github.com/apache/storm/blob/4c42ee3d259d5d90a4e7d3445d1c119601eec6c7/storm-client/src/jvm/org/apache/storm/stats/StatsUtil.java#L1576-L1579
branch at the same time for the same topology. We won't get an exception if
this happens, but we'll still be modifying a HashMap from two threads at the
same time, which isn't safe.
Regarding fixing the `executorBeats == null` branch, it isn't enough to
switch to an iterator, since iterators have the same behavior as a `forEach`
loop (throws exception if underlying collection is concurrently modified).
---