YARN-4882. Change the log level to DEBUG for recovering completed applications (templedf via rkanter)

This commit is contained in:
Robert Kanter 2016-12-28 15:21:52 -08:00
parent 9ca54f4810
commit f216276d21
3 changed files with 57 additions and 14 deletions

View File

@ -488,8 +488,17 @@ public void recover(RMState state) throws Exception {
Map<ApplicationId, ApplicationStateData> appStates = Map<ApplicationId, ApplicationStateData> appStates =
state.getApplicationState(); state.getApplicationState();
LOG.info("Recovering " + appStates.size() + " applications"); LOG.info("Recovering " + appStates.size() + " applications");
for (ApplicationStateData appState : appStates.values()) {
recoverApplication(appState, state); int count = 0;
try {
for (ApplicationStateData appState : appStates.values()) {
recoverApplication(appState, state);
count += 1;
}
} finally {
LOG.info("Successfully recovered " + count + " out of "
+ appStates.size() + " applications");
} }
} }

View File

@ -128,6 +128,10 @@ public class RMAppImpl implements RMApp, Recoverable {
private static final EnumSet<RMAppState> COMPLETED_APP_STATES = private static final EnumSet<RMAppState> COMPLETED_APP_STATES =
EnumSet.of(RMAppState.FINISHED, RMAppState.FINISHING, RMAppState.FAILED, EnumSet.of(RMAppState.FINISHED, RMAppState.FINISHING, RMAppState.FAILED,
RMAppState.KILLED, RMAppState.FINAL_SAVING, RMAppState.KILLING); RMAppState.KILLED, RMAppState.FINAL_SAVING, RMAppState.KILLING);
private static final String STATE_CHANGE_MESSAGE =
"%s State change from %s to %s on event = %s";
private static final String RECOVERY_MESSAGE =
"Recovering app: %s with %d attempts and final state = %s";
// Immutable fields // Immutable fields
private final ApplicationId applicationId; private final ApplicationId applicationId;
@ -905,9 +909,16 @@ public void handle(RMAppEvent event) {
/* TODO fail the application on the failed transition */ /* TODO fail the application on the failed transition */
} }
if (oldState != getState()) { // Log at INFO if we're not recovering or not in a terminal state.
LOG.info(appID + " State change from " + oldState + " to " // Log at DEBUG otherwise.
+ getState() + " on event=" + event.getType()); if ((oldState != getState()) &&
(((recoveredFinalState == null)) ||
(event.getType() != RMAppEventType.RECOVER))) {
LOG.info(String.format(STATE_CHANGE_MESSAGE, appID, oldState,
getState(), event.getType()));
} else if ((oldState != getState()) && LOG.isDebugEnabled()) {
LOG.debug(String.format(STATE_CHANGE_MESSAGE, appID, oldState,
getState(), event.getType()));
} }
} finally { } finally {
this.writeLock.unlock(); this.writeLock.unlock();
@ -919,9 +930,15 @@ public void recover(RMState state) {
ApplicationStateData appState = ApplicationStateData appState =
state.getApplicationState().get(getApplicationId()); state.getApplicationState().get(getApplicationId());
this.recoveredFinalState = appState.getState(); this.recoveredFinalState = appState.getState();
LOG.info("Recovering app: " + getApplicationId() + " with " +
+ appState.getAttemptCount() + " attempts and final state = " if (recoveredFinalState == null) {
+ this.recoveredFinalState ); LOG.info(String.format(RECOVERY_MESSAGE, getApplicationId(),
appState.getAttemptCount(), "NONE"));
} else if (LOG.isDebugEnabled()) {
LOG.debug(String.format(RECOVERY_MESSAGE, getApplicationId(),
appState.getAttemptCount(), recoveredFinalState));
}
this.diagnostics.append(null == appState.getDiagnostics() ? "" : appState this.diagnostics.append(null == appState.getDiagnostics() ? "" : appState
.getDiagnostics()); .getDiagnostics());
this.storedFinishTime = appState.getFinishTime(); this.storedFinishTime = appState.getFinishTime();

View File

@ -114,6 +114,10 @@
@SuppressWarnings({"unchecked", "rawtypes"}) @SuppressWarnings({"unchecked", "rawtypes"})
public class RMAppAttemptImpl implements RMAppAttempt, Recoverable { public class RMAppAttemptImpl implements RMAppAttempt, Recoverable {
private static final String STATE_CHANGE_MESSAGE =
"%s State change from %s to %s on event = %s";
private static final String RECOVERY_MESSAGE =
"Recovering attempt: %s with final state = %s";
private static final Log LOG = LogFactory.getLog(RMAppAttemptImpl.class); private static final Log LOG = LogFactory.getLog(RMAppAttemptImpl.class);
@ -867,9 +871,16 @@ public void handle(RMAppAttemptEvent event) {
/* TODO fail the application on the failed transition */ /* TODO fail the application on the failed transition */
} }
if (oldState != getAppAttemptState()) { // Log at INFO if we're not recovering or not in a terminal state.
LOG.info(appAttemptID + " State change from " + oldState + " to " // Log at DEBUG otherwise.
+ getAppAttemptState()); if ((oldState != getAppAttemptState()) &&
((recoveredFinalState == null) ||
(event.getType() != RMAppAttemptEventType.RECOVER))) {
LOG.info(String.format(STATE_CHANGE_MESSAGE, appAttemptID, oldState,
getAppAttemptState(), event.getType()));
} else if ((oldState != getAppAttemptState()) && LOG.isDebugEnabled()) {
LOG.debug(String.format(STATE_CHANGE_MESSAGE, appAttemptID, oldState,
getAppAttemptState(), event.getType()));
} }
} finally { } finally {
this.writeLock.unlock(); this.writeLock.unlock();
@ -906,8 +917,14 @@ public void recover(RMState state) {
ApplicationAttemptStateData attemptState = ApplicationAttemptStateData attemptState =
appState.getAttempt(getAppAttemptId()); appState.getAttempt(getAppAttemptId());
assert attemptState != null; assert attemptState != null;
LOG.info("Recovering attempt: " + getAppAttemptId() + " with final state: "
+ attemptState.getState()); if (attemptState.getState() == null) {
LOG.info(String.format(RECOVERY_MESSAGE, getAppAttemptId(), "NONE"));
} else if (LOG.isDebugEnabled()) {
LOG.debug(String.format(RECOVERY_MESSAGE, getAppAttemptId(),
attemptState.getState()));
}
diagnostics.append("Attempt recovered after RM restart"); diagnostics.append("Attempt recovered after RM restart");
diagnostics.append(attemptState.getDiagnostics()); diagnostics.append(attemptState.getDiagnostics());
this.amContainerExitStatus = attemptState.getAMContainerExitStatus(); this.amContainerExitStatus = attemptState.getAMContainerExitStatus();