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]