Github user HeartSaVioR commented on the issue:
https://github.com/apache/storm/pull/2433
@danny0405
We have SUPERVISOR_WORKER_VERSION_CLASSPATH_MAP in Config, which is a map
representing supported versions in supervisor. Assuming all the nodes have
consistent configuration, Nimbus could check the value of map while initiating
and determine whether the cluster supports Storm versions under 2.0.0.
https://github.com/apache/storm/blob/466a7ad74da27c1250eedf412a487db409e42c19/storm-client/src/jvm/org/apache/storm/Config.java#L1529-L1551
And updated topology structure has Storm version information:
https://github.com/apache/storm/blob/466a7ad74da27c1250eedf412a487db409e42c19/storm-client/src/storm.thrift#L265-L283
we could treat `no value` as same as cluster's version.
So if Nimbus could determine topology's Storm version and apply its
heartbeat behavior based on the version, we could read heartbeat from ZK for
topology version under Storm 2.0.0, and we could treat heartbeats only from RPC
for topology version same or higher than Storm 2.0.0. Not sure how much the
work would be needed, but with this approach we don't even need to concern with
SUPERVISOR_WORKER_VERSION_CLASSPATH_MAP.
---