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 class RMAppManager implements EventHandler<RMAppManagerEvent>,
Map<ApplicationId, ApplicationStateData> appStates =
state.getApplicationState();
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 =
EnumSet.of(RMAppState.FINISHED, RMAppState.FINISHING, RMAppState.FAILED,
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
private final ApplicationId applicationId;
@ -905,9 +909,16 @@ public class RMAppImpl implements RMApp, Recoverable {
/* TODO fail the application on the failed transition */
}
if (oldState != getState()) {
LOG.info(appID + " State change from " + oldState + " to "
+ getState() + " on event=" + event.getType());
// Log at INFO if we're not recovering or not in a terminal state.
// Log at DEBUG otherwise.
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 {
this.writeLock.unlock();
@ -919,9 +930,15 @@ public class RMAppImpl implements RMApp, Recoverable {
ApplicationStateData appState =
state.getApplicationState().get(getApplicationId());
this.recoveredFinalState = appState.getState();
LOG.info("Recovering app: " + getApplicationId() + " with " +
+ appState.getAttemptCount() + " attempts and final state = "
+ this.recoveredFinalState );
if (recoveredFinalState == null) {
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
.getDiagnostics());
this.storedFinishTime = appState.getFinishTime();
@ -2029,4 +2046,4 @@ public class RMAppImpl implements RMApp, Recoverable {
public void setApplicationPriority(Priority applicationPriority) {
this.applicationPriority = applicationPriority;
}
}
}

View File

@ -114,6 +114,10 @@ import com.google.common.annotations.VisibleForTesting;
@SuppressWarnings({"unchecked", "rawtypes"})
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);
@ -867,9 +871,16 @@ public class RMAppAttemptImpl implements RMAppAttempt, Recoverable {
/* TODO fail the application on the failed transition */
}
if (oldState != getAppAttemptState()) {
LOG.info(appAttemptID + " State change from " + oldState + " to "
+ getAppAttemptState());
// Log at INFO if we're not recovering or not in a terminal state.
// Log at DEBUG otherwise.
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 {
this.writeLock.unlock();
@ -906,8 +917,14 @@ public class RMAppAttemptImpl implements RMAppAttempt, Recoverable {
ApplicationAttemptStateData attemptState =
appState.getAttempt(getAppAttemptId());
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(attemptState.getDiagnostics());
this.amContainerExitStatus = attemptState.getAMContainerExitStatus();