diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMAppManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMAppManager.java index 29830770ecf..0abd625af88 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMAppManager.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMAppManager.java @@ -567,15 +567,25 @@ public void recover(RMState state) throws Exception { LOG.info("Recovering " + appStates.size() + " applications"); int count = 0; + Exception exception = null; - try { for (ApplicationStateData appState : appStates.values()) { - recoverApplication(appState, state); - count += 1; + try { + recoverApplication(appState, state); + count += 1; + } catch (Exception e) { + LOG.error("Error while trying to recover application " + + appState.getApplicationSubmissionContext().getApplicationId(), + e); + if (exception == null) { + exception = e; + } + } } - } finally { - LOG.info("Successfully recovered " + count + " out of " - + appStates.size() + " applications"); + LOG.info("Successfully recovered " + count + " out of " + + appStates.size() + " applications"); + if (exception != null) { + throw exception; } }