Github user revans2 commented on a diff in the pull request:
https://github.com/apache/storm/pull/2433#discussion_r173215759
--- Diff: storm-client/src/jvm/org/apache/storm/daemon/worker/Worker.java
---
@@ -392,6 +401,30 @@ public void establishLogSettingCallback() {
workerState.stormClusterState.topologyLogConfig(topologyId,
this::checkLogConfigChanged);
}
+ /**
+ * Send a heartbeat to local supervisor first to check if supervisor
is ok for heartbeating.
+ */
+ private void heartbeatToMasterIfLocalbeatFail(LSWorkerHeartbeat
lsWorkerHeartbeat) {
+ if (ConfigUtils.isLocalMode(this.conf)) {
+ return;
+ }
+ //in distributed mode, send heartbeat directly to master if local
supervisor goes down
+ SupervisorWorkerHeartbeat workerHeartbeat = new
SupervisorWorkerHeartbeat(lsWorkerHeartbeat.get_topology_id(),
+ lsWorkerHeartbeat.get_executors(),
lsWorkerHeartbeat.get_time_secs());
+ try (SupervisorClient client =
SupervisorClient.getConfiguredClient(conf, Utils.hostname(), supervisorPort)){
+
client.getClient().sendSupervisorWorkerHeartbeat(workerHeartbeat);
+ } catch (Throwable tr1) {
+ //if any error/exception thrown, report directly to nimbus.
+ LOG.warn("Exception when send heartbeat to local supervisor",
tr1.getMessage());
+ try (NimbusClient nimbusClient =
NimbusClient.getConfiguredClient(conf)){
+
nimbusClient.getClient().sendSupervisorWorkerHeartbeat(workerHeartbeat);
+ } catch (Throwable tr2) {
--- End diff --
Here too on Exception vs Throwable.
---