svn merge -c 1452548 FIXES: YARN-345. Many InvalidStateTransitonException errors for ApplicationImpl in Node Manager. Contributed by Robert Parker
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1452549 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
31b1316edf
commit
3cfae3cc79
|
@ -347,6 +347,9 @@ Release 0.23.7 - UNRELEASED
|
||||||
YARN-448. Remove unnecessary hflush from log aggregation (Kihwal Lee via
|
YARN-448. Remove unnecessary hflush from log aggregation (Kihwal Lee via
|
||||||
bobby)
|
bobby)
|
||||||
|
|
||||||
|
YARN-345. Many InvalidStateTransitonException errors for ApplicationImpl
|
||||||
|
in Node Manager (Robert Parker via jlowe)
|
||||||
|
|
||||||
Release 0.23.6 - UNRELEASED
|
Release 0.23.6 - UNRELEASED
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -34,5 +34,6 @@ public enum ApplicationEventType {
|
||||||
|
|
||||||
// Source: Log Handler
|
// Source: Log Handler
|
||||||
APPLICATION_LOG_HANDLING_INITED,
|
APPLICATION_LOG_HANDLING_INITED,
|
||||||
APPLICATION_LOG_HANDLING_FINISHED
|
APPLICATION_LOG_HANDLING_FINISHED,
|
||||||
|
APPLICATION_LOG_HANDLING_FAILED
|
||||||
}
|
}
|
||||||
|
|
|
@ -149,6 +149,9 @@ public class ApplicationImpl implements Application {
|
||||||
.addTransition(ApplicationState.INITING, ApplicationState.INITING,
|
.addTransition(ApplicationState.INITING, ApplicationState.INITING,
|
||||||
ApplicationEventType.APPLICATION_LOG_HANDLING_INITED,
|
ApplicationEventType.APPLICATION_LOG_HANDLING_INITED,
|
||||||
new AppLogInitDoneTransition())
|
new AppLogInitDoneTransition())
|
||||||
|
.addTransition(ApplicationState.INITING, ApplicationState.INITING,
|
||||||
|
ApplicationEventType.APPLICATION_LOG_HANDLING_FAILED,
|
||||||
|
new AppLogInitFailTransition())
|
||||||
.addTransition(ApplicationState.INITING, ApplicationState.RUNNING,
|
.addTransition(ApplicationState.INITING, ApplicationState.RUNNING,
|
||||||
ApplicationEventType.APPLICATION_INITED,
|
ApplicationEventType.APPLICATION_INITED,
|
||||||
new AppInitDoneTransition())
|
new AppInitDoneTransition())
|
||||||
|
@ -237,6 +240,26 @@ public class ApplicationImpl implements Application {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles the APPLICATION_LOG_HANDLING_FAILED event that occurs after
|
||||||
|
* {@link LogAggregationService} has failed to initialize the log
|
||||||
|
* aggregation service
|
||||||
|
*
|
||||||
|
* In particular, this requests that the {@link ResourceLocalizationService}
|
||||||
|
* localize the application-scoped resources.
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
static class AppLogInitFailTransition implements
|
||||||
|
SingleArcTransition<ApplicationImpl, ApplicationEvent> {
|
||||||
|
@Override
|
||||||
|
public void transition(ApplicationImpl app, ApplicationEvent event) {
|
||||||
|
LOG.warn("Log Aggregation service failed to initialize, there will " +
|
||||||
|
"be no logs for this application");
|
||||||
|
app.dispatcher.getEventHandler().handle(
|
||||||
|
new ApplicationLocalizationEvent(
|
||||||
|
LocalizationEventType.INIT_APPLICATION_RESOURCES, app));
|
||||||
|
}
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Handles INIT_CONTAINER events which request that we launch a new
|
* Handles INIT_CONTAINER events which request that we launch a new
|
||||||
* container. When we're still in the INITTING state, we simply
|
* container. When we're still in the INITTING state, we simply
|
||||||
|
|
|
@ -300,8 +300,9 @@ public class LogAggregationService extends AbstractService implements
|
||||||
eventResponse = new ApplicationEvent(appId,
|
eventResponse = new ApplicationEvent(appId,
|
||||||
ApplicationEventType.APPLICATION_LOG_HANDLING_INITED);
|
ApplicationEventType.APPLICATION_LOG_HANDLING_INITED);
|
||||||
} catch (YarnException e) {
|
} catch (YarnException e) {
|
||||||
eventResponse = new ApplicationFinishEvent(appId,
|
LOG.warn("Application failed to init aggregation: " + e.getMessage());
|
||||||
"Application failed to init aggregation: " + e.getMessage());
|
eventResponse = new ApplicationEvent(appId,
|
||||||
|
ApplicationEventType.APPLICATION_LOG_HANDLING_FAILED);
|
||||||
}
|
}
|
||||||
this.dispatcher.getEventHandler().handle(eventResponse);
|
this.dispatcher.getEventHandler().handle(eventResponse);
|
||||||
}
|
}
|
||||||
|
|
|
@ -421,8 +421,8 @@ public class TestLogAggregationService extends BaseContainerManagerTest {
|
||||||
|
|
||||||
dispatcher.await();
|
dispatcher.await();
|
||||||
ApplicationEvent expectedEvents[] = new ApplicationEvent[]{
|
ApplicationEvent expectedEvents[] = new ApplicationEvent[]{
|
||||||
new ApplicationFinishEvent(appId,
|
new ApplicationEvent(appId,
|
||||||
"Application failed to init aggregation: KABOOM!")
|
ApplicationEventType.APPLICATION_LOG_HANDLING_FAILED)
|
||||||
};
|
};
|
||||||
checkEvents(appEventHandler, expectedEvents, false,
|
checkEvents(appEventHandler, expectedEvents, false,
|
||||||
"getType", "getApplicationID", "getDiagnostic");
|
"getType", "getApplicationID", "getDiagnostic");
|
||||||
|
@ -471,8 +471,8 @@ public class TestLogAggregationService extends BaseContainerManagerTest {
|
||||||
|
|
||||||
dispatcher.await();
|
dispatcher.await();
|
||||||
ApplicationEvent expectedEvents[] = new ApplicationEvent[]{
|
ApplicationEvent expectedEvents[] = new ApplicationEvent[]{
|
||||||
new ApplicationFinishEvent(appId,
|
new ApplicationEvent(appId,
|
||||||
"Application failed to init aggregation: "+e)
|
ApplicationEventType.APPLICATION_LOG_HANDLING_FAILED)
|
||||||
};
|
};
|
||||||
checkEvents(appEventHandler, expectedEvents, false,
|
checkEvents(appEventHandler, expectedEvents, false,
|
||||||
"getType", "getApplicationID", "getDiagnostic");
|
"getType", "getApplicationID", "getDiagnostic");
|
||||||
|
|
Loading…
Reference in New Issue