From 5e7491d5320d0c9bbceacebb7d884978677f804b Mon Sep 17 00:00:00 2001 From: Subru Krishnan Date: Tue, 17 Oct 2017 12:38:06 -0700 Subject: [PATCH] YARN-7311. Fix TestRMWebServicesReservation parametrization for fair scheduler. (Yufei Gu via Subru). (cherry picked from commit 75323394fbc4211596a2c8fbb5e584f3183f742f) --- .../reservation/FairReservationSystem.java | 13 +++++++++ .../webapp/TestRMWebServicesReservation.java | 28 ++++++++++--------- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/FairReservationSystem.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/FairReservationSystem.java index 9bf92c2ffa9..611fca8a85c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/FairReservationSystem.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/FairReservationSystem.java @@ -25,6 +25,7 @@ import org.apache.hadoop.yarn.exceptions.YarnRuntimeException; import org.apache.hadoop.yarn.server.resourcemanager.RMContext; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.QueueMetrics; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceScheduler; +import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FSQueue; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler; import org.apache.hadoop.yarn.util.resource.ResourceCalculator; @@ -87,4 +88,16 @@ public class FairReservationSystem extends AbstractReservationSystem { .getSteadyFairShare(); } + @Override + public Plan getPlan(String planName) { + // make sure plan name is a full queue name in fair scheduler. For example, + // "root.default" is the full queue name for "default". + FSQueue queue = fairScheduler.getQueueManager().getQueue(planName); + + if (queue != null) { + return super.getPlan(queue.getQueueName()); + } else { + return null; + } + } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesReservation.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesReservation.java index d055130597e..492e78ab0be 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesReservation.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesReservation.java @@ -152,21 +152,9 @@ public class TestRMWebServicesReservation extends JerseyTestBase { bind(GenericExceptionHandler.class); conf.setInt(YarnConfiguration.RM_AM_MAX_ATTEMPTS, YarnConfiguration.DEFAULT_RM_AM_MAX_ATTEMPTS); - Configuration conf = new Configuration(); conf.setBoolean(YarnConfiguration.RM_RESERVATION_SYSTEM_ENABLE, true); - conf.setInt(YarnConfiguration.RM_AM_MAX_ATTEMPTS, - YarnConfiguration.DEFAULT_RM_AM_MAX_ATTEMPTS); - conf.setClass(YarnConfiguration.RM_SCHEDULER, CapacityScheduler.class, - ResourceScheduler.class); - CapacitySchedulerConfiguration csconf = - new CapacitySchedulerConfiguration(conf); - String[] queues = { "default", "dedicated" }; - csconf.setQueues("root", queues); - csconf.setCapacity("root.default", 50.0f); - csconf.setCapacity("root.dedicated", 50.0f); - csconf.setReservable("root.dedicated", true); - rm = new MockRM(csconf); + rm = new MockRM(conf); bind(ResourceManager.class).toInstance(rm); if (setAuthFilter) { filter("/*").through(TestRMCustomAuthFilter.class); @@ -180,6 +168,16 @@ public class TestRMWebServicesReservation extends JerseyTestBase { public void configureScheduler() { conf.set(YarnConfiguration.RM_SCHEDULER, CapacityScheduler.class.getName()); + conf.setClass(YarnConfiguration.RM_SCHEDULER, CapacityScheduler.class, + ResourceScheduler.class); + CapacitySchedulerConfiguration csconf = + new CapacitySchedulerConfiguration(conf); + String[] queues = { "default", "dedicated" }; + csconf.setQueues("root", queues); + csconf.setCapacity("root.default", 50.0f); + csconf.setCapacity("root.dedicated", 50.0f); + csconf.setReservable("root.dedicated", true); + conf = csconf; } } @@ -196,9 +194,13 @@ public class TestRMWebServicesReservation extends JerseyTestBase { out.println(" someuser "); out.println(" "); out.println(" "); + out.println(" "); + out.println(" "); out.println(" someuser "); out.println(" "); out.println(""); + out.println("drf" + + ""); out.println(""); out.close(); } catch (IOException e) {