From 22dee29857d97127d3a6d807758b32b2af694cbf Mon Sep 17 00:00:00 2001 From: Steve Loughran Date: Fri, 18 Sep 2015 09:45:17 +0100 Subject: [PATCH] YARN-2597 MiniYARNCluster should propagate reason for AHS not starting --- hadoop-yarn-project/CHANGES.txt | 3 ++ .../hadoop/yarn/server/MiniYARNCluster.java | 42 +++++++++---------- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index e62bdedf918..f7120c29029 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -393,6 +393,9 @@ Release 2.8.0 - UNRELEASED YARN-4149. yarn logs -am should provide an option to fetch all the log files (Varun Vasudev via xgong) + YARN-2597. MiniYARNCluster should propagate reason for AHS not starting. + (stevel) + OPTIMIZATIONS YARN-3339. TestDockerContainerExecutor should pull a single image and not diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/MiniYARNCluster.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/MiniYARNCluster.java index 319047d45e9..a3483904b36 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/MiniYARNCluster.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/MiniYARNCluster.java @@ -37,6 +37,7 @@ import org.apache.hadoop.ha.HAServiceProtocol; import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem; import org.apache.hadoop.service.AbstractService; import org.apache.hadoop.service.CompositeService; +import org.apache.hadoop.service.ServiceStateException; import org.apache.hadoop.util.Shell; import org.apache.hadoop.util.Shell.ShellCommandExecutor; import org.apache.hadoop.yarn.api.protocolrecords.GetClusterMetricsRequest; @@ -708,32 +709,31 @@ public class MiniYARNCluster extends CompositeService { @Override protected synchronized void serviceStart() throws Exception { - try { - new Thread() { - public void run() { - appHistoryServer.start(); - }; - }.start(); - int waitCount = 0; - while (appHistoryServer.getServiceState() == STATE.INITED - && waitCount++ < 60) { - LOG.info("Waiting for Timeline Server to start..."); - Thread.sleep(1500); - } - if (appHistoryServer.getServiceState() != STATE.STARTED) { - // AHS could have failed. - throw new IOException( - "ApplicationHistoryServer failed to start. Final state is " - + appHistoryServer.getServiceState()); - } - super.serviceStart(); - } catch (Throwable t) { - throw new YarnRuntimeException(t); + + new Thread() { + public void run() { + appHistoryServer.start(); + }; + }.start(); + int waitCount = 0; + while (appHistoryServer.getServiceState() == STATE.INITED + && waitCount++ < 60) { + LOG.info("Waiting for Timeline Server to start..."); + Thread.sleep(1500); + } + if (appHistoryServer.getServiceState() != STATE.STARTED) { + // AHS could have failed. + IOException ioe = new IOException( + "ApplicationHistoryServer failed to start. Final state is " + + appHistoryServer.getServiceState()); + ioe.initCause(appHistoryServer.getFailureCause()); + throw ioe; } LOG.info("MiniYARN ApplicationHistoryServer address: " + getConfig().get(YarnConfiguration.TIMELINE_SERVICE_ADDRESS)); LOG.info("MiniYARN ApplicationHistoryServer web address: " + getConfig().get(YarnConfiguration.TIMELINE_SERVICE_WEBAPP_ADDRESS)); + super.serviceStart(); } @Override