YARN-9820. RM logs InvalidStateTransitionException when app is submitted. Contributed by Prabhu Joseph
This commit is contained in:
parent
080fc6d943
commit
0e88bcd8e6
|
@ -852,6 +852,13 @@ public abstract class RMStateStore extends AbstractService {
|
|||
getRMStateStoreEventHandler().handle(new RMStateUpdateAppEvent(appState));
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public void updateApplicationState(ApplicationStateData appState,
|
||||
boolean notifyApp) {
|
||||
getRMStateStoreEventHandler().handle(new RMStateUpdateAppEvent(appState,
|
||||
notifyApp));
|
||||
}
|
||||
|
||||
public void updateApplicationStateSynchronously(ApplicationStateData appState,
|
||||
boolean notifyApp, SettableFuture<Object> resultFuture) {
|
||||
handleStoreEvent(
|
||||
|
|
|
@ -30,9 +30,14 @@ public class RMStateUpdateAppEvent extends RMStateStoreEvent {
|
|||
private SettableFuture<Object> future;
|
||||
|
||||
public RMStateUpdateAppEvent(ApplicationStateData appState) {
|
||||
this (appState, true);
|
||||
}
|
||||
|
||||
public RMStateUpdateAppEvent(ApplicationStateData appState,
|
||||
boolean notifyApplication) {
|
||||
super(RMStateStoreEventType.UPDATE_APP);
|
||||
this.appState = appState;
|
||||
this.notifyApplication = true;
|
||||
this.notifyApplication = notifyApplication;
|
||||
this.future = null;
|
||||
}
|
||||
|
||||
|
|
|
@ -1036,7 +1036,7 @@ public class RMAppImpl implements RMApp, Recoverable {
|
|||
app.callerContext);
|
||||
appState.setApplicationTimeouts(app.getApplicationTimeouts());
|
||||
appState.setLaunchTime(event.getTimestamp());
|
||||
app.rmContext.getStateStore().updateApplicationState(appState);
|
||||
app.rmContext.getStateStore().updateApplicationState(appState, false);
|
||||
app.launchTime = event.getTimestamp();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
package org.apache.hadoop.yarn.server.resourcemanager.rmapp;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Matchers.anyLong;
|
||||
import static org.mockito.Matchers.eq;
|
||||
|
@ -472,8 +473,12 @@ public class TestRMAppTransitions {
|
|||
private void assertAppStateLaunchTimeSaved(long expectedLaunchTime) {
|
||||
ArgumentCaptor<ApplicationStateData> state =
|
||||
ArgumentCaptor.forClass(ApplicationStateData.class);
|
||||
verify(store, times(1)).updateApplicationState(state.capture());
|
||||
ArgumentCaptor<Boolean> notifyApp =
|
||||
ArgumentCaptor.forClass(Boolean.class);
|
||||
verify(store, times(1)).updateApplicationState(state.capture(),
|
||||
notifyApp.capture());
|
||||
assertEquals(expectedLaunchTime, state.getValue().getLaunchTime());
|
||||
assertFalse(notifyApp.getValue());
|
||||
}
|
||||
|
||||
private void assertKilled(RMApp application) {
|
||||
|
|
Loading…
Reference in New Issue