Merge pull request #3292 from agresch/agresch_storm_3656

STORM-3656 handle worker NPE from Hadoop auto renewal thread
diff --git a/storm-client/src/jvm/org/apache/storm/Config.java b/storm-client/src/jvm/org/apache/storm/Config.java
index c27b468..93c5499 100644
--- a/storm-client/src/jvm/org/apache/storm/Config.java
+++ b/storm-client/src/jvm/org/apache/storm/Config.java
@@ -385,12 +385,22 @@
     /**
      * A list of host names that this topology would prefer to be scheduled on (no guarantee is given though). This is intended for
      * debugging only.
+     *
+     * <p>Favored nodes are moved to the front of the node selection list.
+     * If the same node is also present in {@link #TOPOLOGY_SCHEDULER_UNFAVORED_NODES}
+     * then the node is considered only as a favored node and is removed from the unfavored list.
+     * </p>
      */
     @IsStringList
     public static final String TOPOLOGY_SCHEDULER_FAVORED_NODES = "topology.scheduler.favored.nodes";
     /**
      * A list of host names that this topology would prefer to NOT be scheduled on (no guarantee is given though). This is intended for
      * debugging only.
+     *
+     * <p>Unfavored nodes are moved to the end of the node selection list.
+     * If the same node is also present in {@link #TOPOLOGY_SCHEDULER_FAVORED_NODES}
+     * then the node is considered only as a favored node and is removed from the unfavored list.
+     * </p>
      */
     @IsStringList
     public static final String TOPOLOGY_SCHEDULER_UNFAVORED_NODES = "topology.scheduler.unfavored.nodes";
diff --git a/storm-server/src/main/java/org/apache/storm/daemon/supervisor/Supervisor.java b/storm-server/src/main/java/org/apache/storm/daemon/supervisor/Supervisor.java
index ce597de..c72b4cb 100644
--- a/storm-server/src/main/java/org/apache/storm/daemon/supervisor/Supervisor.java
+++ b/storm-server/src/main/java/org/apache/storm/daemon/supervisor/Supervisor.java
@@ -181,11 +181,11 @@
             throw Utils.wrapInRuntime(e);
         }
 
-        this.heartbeatTimer = new StormTimer(null, new DefaultUncaughtExceptionHandler());
+        this.heartbeatTimer = new StormTimer("HBTimer", new DefaultUncaughtExceptionHandler());
 
-        this.workerHeartbeatTimer = new StormTimer(null, new DefaultUncaughtExceptionHandler());
+        this.workerHeartbeatTimer = new StormTimer("WorkerHBTimer", new DefaultUncaughtExceptionHandler());
 
-        this.eventTimer = new StormTimer(null, new DefaultUncaughtExceptionHandler());
+        this.eventTimer = new StormTimer("EventTimer", new DefaultUncaughtExceptionHandler());
         
         this.supervisorThriftInterface = createSupervisorIface();
     }