Repository: hadoop
Updated Branches:
  refs/heads/trunk be1cffb08 -> 66f059ed1


YARN-8618. Added detection for non-upgradable service.
           Contributed by Chandni Singh


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/66f059ed
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/66f059ed
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/66f059ed

Branch: refs/heads/trunk
Commit: 66f059ed1db93c0a86e86c64636013001169a677
Parents: be1cffb
Author: Eric Yang <[email protected]>
Authored: Thu Oct 18 19:59:11 2018 -0400
Committer: Eric Yang <[email protected]>
Committed: Thu Oct 18 19:59:11 2018 -0400

----------------------------------------------------------------------
 .../yarn/service/client/ServiceClient.java      | 17 ++++++++++++++-
 .../yarn/service/client/TestServiceClient.java  | 23 ++++++++++++++++++++
 2 files changed, 39 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/66f059ed/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/client/ServiceClient.java
----------------------------------------------------------------------
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/client/ServiceClient.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/client/ServiceClient.java
index 23db57e..c71ed03 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/client/ServiceClient.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/client/ServiceClient.java
@@ -238,7 +238,22 @@ public class ServiceClient extends AppAdminClient 
implements SliderExitCodes,
       LOG.error(message);
       throw new YarnException(message);
     }
-
+    boolean foundNotNeverComp = false;
+    for (Component comp : persistedService.getComponents()) {
+      // If restart policy of any component is not NEVER then upgrade is
+      // allowed.
+      if (!comp.getRestartPolicy().equals(Component.RestartPolicyEnum.NEVER)) {
+        foundNotNeverComp = true;
+        break;
+      }
+    }
+    if (!foundNotNeverComp) {
+      String message = "All the components of the service " + service.getName()
+          + " have " + Component.RestartPolicyEnum.NEVER + " restart policy, " 
+
+          "so it cannot be upgraded.";
+      LOG.error(message);
+      throw new YarnException(message);
+    }
     Service liveService = getStatus(service.getName());
     if (!liveService.getState().equals(ServiceState.STABLE)) {
       String message = service.getName() + " is at " + liveService.getState()

http://git-wip-us.apache.org/repos/asf/hadoop/blob/66f059ed/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/test/java/org/apache/hadoop/yarn/service/client/TestServiceClient.java
----------------------------------------------------------------------
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/client/TestServiceClient.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/client/TestServiceClient.java
index 700655c..beb3339 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/client/TestServiceClient.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/client/TestServiceClient.java
@@ -149,6 +149,29 @@ public class TestServiceClient {
     client.stop();
   }
 
+  @Test
+  public void testUpgradeDisabledWhenAllCompsHaveNeverRestartPolicy()
+      throws Exception {
+    Service service = createService();
+    service.getComponents().forEach(comp ->
+        comp.setRestartPolicy(Component.RestartPolicyEnum.NEVER));
+
+    ServiceClient client = MockServiceClient.create(rule, service, true);
+
+    //upgrade the service
+    service.setVersion("v2");
+    try {
+      client.initiateUpgrade(service);
+    } catch (YarnException ex) {
+      Assert.assertEquals("All the components of the service " +
+              service.getName() + " have " + Component.RestartPolicyEnum.NEVER
+              + " restart policy, so it cannot be upgraded.",
+          ex.getMessage());
+      return;
+    }
+    Assert.fail();
+  }
+
   private Service createService() throws IOException,
       YarnException {
     Service service = ServiceTestUtils.createExampleApplication();


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to