YARN-5476. Non existent application reported as ACCEPTED by YarnClientImpl (Junping Du via Varun Saxena)
This commit is contained in:
parent
53f097a474
commit
ca139a3f87
|
@ -843,8 +843,9 @@ public class RMAppImpl implements RMApp, Recoverable {
|
||||||
this.startTime = appState.getStartTime();
|
this.startTime = appState.getStartTime();
|
||||||
this.callerContext = appState.getCallerContext();
|
this.callerContext = appState.getCallerContext();
|
||||||
|
|
||||||
// send the ATS create Event
|
// send the ATS create Event during RM recovery.
|
||||||
sendATSCreateEvent(this, this.startTime);
|
// NOTE: it could be duplicated with events sent before RM get restarted.
|
||||||
|
sendATSCreateEvent();
|
||||||
|
|
||||||
for(int i=0; i<appState.getAttemptCount(); ++i) {
|
for(int i=0; i<appState.getAttemptCount(); ++i) {
|
||||||
// create attempt
|
// create attempt
|
||||||
|
@ -1043,6 +1044,8 @@ public class RMAppImpl implements RMApp, Recoverable {
|
||||||
public void transition(RMAppImpl app, RMAppEvent event) {
|
public void transition(RMAppImpl app, RMAppEvent event) {
|
||||||
app.handler.handle(new AppAddedSchedulerEvent(app.user,
|
app.handler.handle(new AppAddedSchedulerEvent(app.user,
|
||||||
app.submissionContext, false));
|
app.submissionContext, false));
|
||||||
|
// send the ATS create Event
|
||||||
|
app.sendATSCreateEvent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1121,9 +1124,6 @@ public class RMAppImpl implements RMApp, Recoverable {
|
||||||
// communication
|
// communication
|
||||||
LOG.info("Storing application with id " + app.applicationId);
|
LOG.info("Storing application with id " + app.applicationId);
|
||||||
app.rmContext.getStateStore().storeNewApplication(app);
|
app.rmContext.getStateStore().storeNewApplication(app);
|
||||||
|
|
||||||
// send the ATS create Event
|
|
||||||
app.sendATSCreateEvent(app, app.startTime);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1796,9 +1796,9 @@ public class RMAppImpl implements RMApp, Recoverable {
|
||||||
return callerContext;
|
return callerContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendATSCreateEvent(RMApp app, long startTime) {
|
private void sendATSCreateEvent() {
|
||||||
rmContext.getRMApplicationHistoryWriter().applicationStarted(app);
|
rmContext.getRMApplicationHistoryWriter().applicationStarted(this);
|
||||||
rmContext.getSystemMetricsPublisher().appCreated(app, startTime);
|
rmContext.getSystemMetricsPublisher().appCreated(this, this.startTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
|
|
|
@ -20,6 +20,7 @@ package org.apache.hadoop.yarn.server.resourcemanager.rmapp;
|
||||||
|
|
||||||
import static org.mockito.Matchers.any;
|
import static org.mockito.Matchers.any;
|
||||||
import static org.mockito.Matchers.anyLong;
|
import static org.mockito.Matchers.anyLong;
|
||||||
|
import static org.mockito.Matchers.eq;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.reset;
|
import static org.mockito.Mockito.reset;
|
||||||
|
@ -377,18 +378,25 @@ public class TestRMAppTransitions {
|
||||||
application.handle(event);
|
application.handle(event);
|
||||||
assertStartTimeSet(application);
|
assertStartTimeSet(application);
|
||||||
assertAppState(RMAppState.NEW_SAVING, application);
|
assertAppState(RMAppState.NEW_SAVING, application);
|
||||||
|
// verify sendATSCreateEvent() is not get called during
|
||||||
|
// RMAppNewlySavingTransition.
|
||||||
|
verify(publisher, times(0)).appCreated(eq(application), anyLong());
|
||||||
return application;
|
return application;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected RMApp testCreateAppSubmittedNoRecovery(
|
protected RMApp testCreateAppSubmittedNoRecovery(
|
||||||
ApplicationSubmissionContext submissionContext) throws IOException {
|
ApplicationSubmissionContext submissionContext) throws IOException {
|
||||||
RMApp application = testCreateAppNewSaving(submissionContext);
|
RMApp application = testCreateAppNewSaving(submissionContext);
|
||||||
// NEW_SAVING => SUBMITTED event RMAppEventType.APP_SAVED
|
// NEW_SAVING => SUBMITTED event RMAppEventType.APP_NEW_SAVED
|
||||||
RMAppEvent event =
|
RMAppEvent event =
|
||||||
new RMAppEvent(application.getApplicationId(), RMAppEventType.APP_NEW_SAVED);
|
new RMAppEvent(application.getApplicationId(),
|
||||||
|
RMAppEventType.APP_NEW_SAVED);
|
||||||
application.handle(event);
|
application.handle(event);
|
||||||
assertStartTimeSet(application);
|
assertStartTimeSet(application);
|
||||||
assertAppState(RMAppState.SUBMITTED, application);
|
assertAppState(RMAppState.SUBMITTED, application);
|
||||||
|
// verify sendATSCreateEvent() is get called during
|
||||||
|
// AddApplicationToSchedulerTransition.
|
||||||
|
verify(publisher).appCreated(eq(application), anyLong());
|
||||||
return application;
|
return application;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -403,7 +411,6 @@ public class TestRMAppTransitions {
|
||||||
RMAppEvent event =
|
RMAppEvent event =
|
||||||
new RMAppRecoverEvent(application.getApplicationId(), state);
|
new RMAppRecoverEvent(application.getApplicationId(), state);
|
||||||
|
|
||||||
|
|
||||||
application.handle(event);
|
application.handle(event);
|
||||||
assertStartTimeSet(application);
|
assertStartTimeSet(application);
|
||||||
assertAppState(RMAppState.SUBMITTED, application);
|
assertAppState(RMAppState.SUBMITTED, application);
|
||||||
|
|
Loading…
Reference in New Issue