YARN-6948. Invalid event: ATTEMPT_ADDED at FINAL_SAVING. Contributed by lujie
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/90c86d6e Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/90c86d6e Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/90c86d6e Branch: refs/heads/YARN-6592 Commit: 90c86d6e090d668414681fcb5eb02add5d419b33 Parents: ebff4de Author: Jason Lowe <jl...@apache.org> Authored: Tue Jan 9 10:51:15 2018 -0600 Committer: Jason Lowe <jl...@apache.org> Committed: Tue Jan 9 10:51:15 2018 -0600 ---------------------------------------------------------------------- .../rmapp/attempt/RMAppAttemptImpl.java | 9 +++++-- .../attempt/TestRMAppAttemptTransitions.java | 27 +++++++++++++++++++- 2 files changed, 33 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/90c86d6e/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java index 2d5c6a3..cf10be4 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java @@ -418,7 +418,8 @@ public class RMAppAttemptImpl implements RMAppAttempt, Recoverable { RMAppAttemptEventType.CONTAINER_ALLOCATED, RMAppAttemptEventType.ATTEMPT_NEW_SAVED, RMAppAttemptEventType.KILL, - RMAppAttemptEventType.FAIL)) + RMAppAttemptEventType.FAIL, + RMAppAttemptEventType.ATTEMPT_ADDED)) // Transitions from FAILED State // For work-preserving AM restart, failed attempt are still capturing @@ -909,7 +910,7 @@ public class RMAppAttemptImpl implements RMAppAttempt, Recoverable { } catch (InvalidStateTransitionException e) { LOG.error("App attempt: " + appAttemptID + " can't handle this event at current state", e); - /* TODO fail the application on the failed transition */ + onInvalidTranstion(event.getType(), oldState); } // Log at INFO if we're not recovering or not in a terminal state. @@ -2240,4 +2241,8 @@ public class RMAppAttemptImpl implements RMAppAttempt, Recoverable { return Collections.EMPTY_SET; } + protected void onInvalidTranstion(RMAppAttemptEventType rmAppAttemptEventType, + RMAppAttemptState state){ + /* TODO fail the application on the failed transition */ + } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/90c86d6e/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/TestRMAppAttemptTransitions.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/TestRMAppAttemptTransitions.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/TestRMAppAttemptTransitions.java index 9dd5703..0e4f308 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/TestRMAppAttemptTransitions.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/TestRMAppAttemptTransitions.java @@ -327,7 +327,15 @@ public class TestRMAppAttemptTransitions { masterService, submissionContext, new Configuration(), Collections.singletonList(BuilderUtils.newResourceRequest( RMAppAttemptImpl.AM_CONTAINER_PRIORITY, ResourceRequest.ANY, - submissionContext.getResource(), 1)), application); + submissionContext.getResource(), 1)), application) { + @Override + protected void onInvalidTranstion( + RMAppAttemptEventType rmAppAttemptEventType, + RMAppAttemptState state) { + Assert.assertTrue("RMAppAttemptImpl can't handle " + + rmAppAttemptEventType + " at state " + state, false); + } + }; when(application.getCurrentAppAttempt()).thenReturn(applicationAttempt); when(application.getApplicationId()).thenReturn(applicationId); @@ -974,6 +982,23 @@ public class TestRMAppAttemptTransitions { applicationAttempt.getAppAttemptState()); } + @Test(timeout = 10000) + public void testAttemptAddedAtFinalSaving() { + submitApplicationAttempt(); + + // SUBNITED->FINAL_SAVING + applicationAttempt.handle(new RMAppAttemptEvent(applicationAttempt + .getAppAttemptId(), RMAppAttemptEventType.KILL)); + assertEquals(RMAppAttemptState.FINAL_SAVING, + applicationAttempt.getAppAttemptState()); + + applicationAttempt.handle(new RMAppAttemptEvent(applicationAttempt + .getAppAttemptId(), RMAppAttemptEventType.ATTEMPT_ADDED)); + + assertEquals(RMAppAttemptState.FINAL_SAVING, + applicationAttempt.getAppAttemptState()); + } + @Test public void testAMCrashAtAllocated() { Container amContainer = allocateApplicationAttempt(); --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org