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]
