From c1b4c6adf4e6fc733ed633f79f717de2950d607e Mon Sep 17 00:00:00 2001 From: Rohith Sharma K S Date: Wed, 11 Apr 2018 09:18:50 +0530 Subject: [PATCH] YARN-7941. Transitive dependencies for component are not resolved. Contributed by Billie Rinaldi. (cherry picked from commit c0487110990958fa985d273eb178bdf76002cf3a) --- .../hadoop/yarn/service/component/Component.java | 1 + .../yarn/service/TestYarnNativeServices.java | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/Component.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/Component.java index 30906920378..9e10ae68398 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/Component.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/Component.java @@ -164,6 +164,7 @@ public class Component implements EventHandler { maxContainerFailurePerComp = componentSpec.getConfiguration() .getPropertyInt(CONTAINER_FAILURE_THRESHOLD, 10); createNumCompInstances(component.getNumberOfContainers()); + setDesiredContainers(component.getNumberOfContainers().intValue()); } private void createNumCompInstances(long count) { diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/test/java/org/apache/hadoop/yarn/service/TestYarnNativeServices.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/test/java/org/apache/hadoop/yarn/service/TestYarnNativeServices.java index 091e624d852..51a190e4013 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/test/java/org/apache/hadoop/yarn/service/TestYarnNativeServices.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/test/java/org/apache/hadoop/yarn/service/TestYarnNativeServices.java @@ -137,7 +137,9 @@ public class TestYarnNativeServices extends ServiceTestUtils { // Create compa with 2 containers // Create compb with 2 containers which depends on compa - // Check containers for compa started before containers for compb + // Create compc with 2 containers which depends on compb + // Check containers for compa started before containers for compb before + // containers for compc @Test (timeout = 200000) public void testComponentStartOrder() throws Exception { setupInternal(NUM_NMS); @@ -146,17 +148,23 @@ public class TestYarnNativeServices extends ServiceTestUtils { exampleApp.setName("teststartorder"); exampleApp.setVersion("v1"); exampleApp.addComponent(createComponent("compa", 2, "sleep 1000")); - Component compb = createComponent("compb", 2, "sleep 1000"); - // Let compb depedends on compa; + // Let compb depend on compa + Component compb = createComponent("compb", 2, "sleep 1000"); compb.setDependencies(Collections.singletonList("compa")); exampleApp.addComponent(compb); + // Let compc depend on compb + Component compc = createComponent("compc", 2, "sleep 1000"); + compc.setDependencies(Collections.singletonList("compb")); + exampleApp.addComponent(compc); + client.actionCreate(exampleApp); waitForServiceToBeStable(client, exampleApp); // check that containers for compa are launched before containers for compb - checkContainerLaunchDependencies(client, exampleApp, "compa", "compb"); + checkContainerLaunchDependencies(client, exampleApp, "compa", "compb", + "compc"); client.actionStop(exampleApp.getName(), true); client.actionDestroy(exampleApp.getName());