YARN-9112. [Submarine] Support polling applicationId when it's not ready in 
cluster. (Zhankun Tang via wangda)

Change-Id: I73d73f3d631b28fb9866faa56571839b13824a97


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

Branch: refs/heads/trunk
Commit: 9fba6cc2471db8df9ca6da7b9df378e3072dfeb2
Parents: 61bdcb7
Author: Wangda Tan <[email protected]>
Authored: Wed Dec 12 11:44:58 2018 -0800
Committer: Wangda Tan <[email protected]>
Committed: Wed Dec 12 11:44:58 2018 -0800

----------------------------------------------------------------------
 .../yarnservice/YarnServiceJobSubmitter.java    | 24 ++++++++++++++++----
 1 file changed, 20 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/9fba6cc2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/main/java/org/apache/hadoop/yarn/submarine/runtimes/yarnservice/YarnServiceJobSubmitter.java
----------------------------------------------------------------------
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/main/java/org/apache/hadoop/yarn/submarine/runtimes/yarnservice/YarnServiceJobSubmitter.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/main/java/org/apache/hadoop/yarn/submarine/runtimes/yarnservice/YarnServiceJobSubmitter.java
index 496ba7c..06d33b2 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/main/java/org/apache/hadoop/yarn/submarine/runtimes/yarnservice/YarnServiceJobSubmitter.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/src/main/java/org/apache/hadoop/yarn/submarine/runtimes/yarnservice/YarnServiceJobSubmitter.java
@@ -865,10 +865,26 @@ public class YarnServiceJobSubmitter implements 
JobSubmitter {
     }
 
     String appStatus=appAdminClient.getStatusString(serviceSpec.getName());
-    Service app=ServiceApiUtil.jsonSerDeser.fromJson(appStatus);
-    if(app.getId() == null) {
-      throw new YarnException("Can't get application id for Service " +
-          serviceSpec.getName());
+    Service app = ServiceApiUtil.jsonSerDeser.fromJson(appStatus);
+
+    // Retry multiple times if applicationId is null
+    int maxRetryTimes = 30;
+    int count = 0;
+    while (app.getId() == null && count < maxRetryTimes) {
+      LOG.info("Waiting for application Id. AppStatusString=\n {}", appStatus);
+      try {
+        Thread.sleep(1000);
+      } catch (InterruptedException e) {
+        throw new IOException(e);
+      }
+      appStatus = appAdminClient.getStatusString(serviceSpec.getName());
+      app = ServiceApiUtil.jsonSerDeser.fromJson(appStatus);
+      count++;
+    }
+    // Retry timeout
+    if (app.getId() == null) {
+      throw new YarnException(
+          "Can't get application id for Service " + serviceSpec.getName());
     }
     ApplicationId appid = ApplicationId.fromString(app.getId());
     appAdminClient.stop();


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

Reply via email to