Discovered during reading
STORM-2018's review comments:
ReadClusterState.run() method loads all the profiling requests from Zk then filters the ones designated to that particular node it runs on.
The filtered profiling requests are stored in a Map: Map<Integer, Set<TopoProfileAction>> on a per Slot basis.
For some reason the TCP Port is serialized as i64/Long in NodeInfo, which is later used as a key in the Map.
The Map.put is converted properly to Integer, but the Map.get does not, causing the lookups to report a miss in the filtered Map.
This could cause TopoProfileActions ignored if one would send multiple TopoProfileActions through Zk.
I don't think that could normally happen (using the UI), but the fix is trivial.