diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java index fab9ebe..faf359e 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java @@ -1246,6 +1246,16 @@ public synchronized void reinitialize(Configuration conf, RMContext rmContext) rackLocalityThreshold = this.conf.getLocalityThresholdRack(); nodeLocalityDelayMs = this.conf.getLocalityDelayNodeMs(); rackLocalityDelayMs = this.conf.getLocalityDelayRackMs(); + if(nodeLocalityDelayMs <= 0) { + nodeLocalityDelayMs = 3 * conf.getLong(YarnConfiguration + .RM_NM_HEARTBEAT_INTERVAL_MS, + YarnConfiguration.DEFAULT_RM_NM_HEARTBEAT_INTERVAL_MS); + } + if(rackLocalityDelayMs <= 0) { + rackLocalityDelayMs = 3 * conf.getLong(YarnConfiguration + .RM_NM_HEARTBEAT_INTERVAL_MS, + YarnConfiguration.DEFAULT_RM_NM_HEARTBEAT_INTERVAL_MS); + } preemptionEnabled = this.conf.getPreemptionEnabled(); assignMultiple = this.conf.getAssignMultiple(); maxAssign = this.conf.getMaxAssign(); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java index 50121c3..a6de112 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java @@ -331,7 +331,23 @@ public void testLoadConfigurationOnInitialize() throws IOException { Assert.assertEquals(128, scheduler.getIncrementResourceCapability().getMemory()); } - + + @Test(timeout=2000) + public void testDefaultDelayEnable() throws IOException { + Configuration config = createConfiguration(); + config.setInt(FairSchedulerConfiguration.LOCALITY_DELAY_NODE_MS, -1); + config.setInt(FairSchedulerConfiguration.LOCALITY_DELAY_RACK_MS, -1); + scheduler.reinitialize(config, resourceManager.getRMContext()); + Assert.assertEquals(3 * conf.getLong(YarnConfiguration + .RM_NM_HEARTBEAT_INTERVAL_MS, + YarnConfiguration.DEFAULT_RM_NM_HEARTBEAT_INTERVAL_MS), + scheduler.nodeLocalityDelayMs); + Assert.assertEquals(3 * conf.getLong(YarnConfiguration + .RM_NM_HEARTBEAT_INTERVAL_MS, + YarnConfiguration.DEFAULT_RM_NM_HEARTBEAT_INTERVAL_MS), + scheduler.rackLocalityDelayMs); + } + @Test public void testNonMinZeroResourcesSettings() throws IOException { FairScheduler fs = new FairScheduler();