From ab11085b81353e1617875deb10f3c8e2a8b91a1e Mon Sep 17 00:00:00 2001 From: Jason Lowe Date: Mon, 28 Sep 2015 22:12:03 +0000 Subject: [PATCH] MAPREDUCE-6492. AsyncDispatcher exit with NPE on TaskAttemptImpl#sendJHStartEventForAssignedFailTask. Contributed by Bibin A Chundatt --- hadoop-mapreduce-project/CHANGES.txt | 4 ++++ .../hadoop/mapreduce/v2/app/job/impl/TaskAttemptImpl.java | 4 +++- .../hadoop/mapreduce/v2/app/job/impl/TestTaskAttempt.java | 8 ++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/hadoop-mapreduce-project/CHANGES.txt b/hadoop-mapreduce-project/CHANGES.txt index 67adcbd1f9..da5ee0bd41 100644 --- a/hadoop-mapreduce-project/CHANGES.txt +++ b/hadoop-mapreduce-project/CHANGES.txt @@ -626,6 +626,10 @@ Release 2.7.2 - UNRELEASED MAPREDUCE-5982. Task attempts that fail from the ASSIGNED state can disappear (Chang Li via jlowe) + MAPREDUCE-6492. AsyncDispatcher exit with NPE on + TaskAttemptImpl#sendJHStartEventForAssignedFailTask (Bibin A Chundatt via + jlowe) + Release 2.7.1 - 2015-07-06 INCOMPATIBLE CHANGES diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/job/impl/TaskAttemptImpl.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/job/impl/TaskAttemptImpl.java index a7becdbfac..db4f585a8d 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/job/impl/TaskAttemptImpl.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/job/impl/TaskAttemptImpl.java @@ -1486,7 +1486,9 @@ private static JobCounterUpdateEvent createJobCounterUpdateEventTAKilled( private static void sendJHStartEventForAssignedFailTask(TaskAttemptImpl taskAttempt) { - TaskAttemptContainerLaunchedEvent event; + if (null == taskAttempt.container) { + return; + } taskAttempt.launchTime = taskAttempt.clock.getTime(); InetSocketAddress nodeHttpInetAddr = diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/test/java/org/apache/hadoop/mapreduce/v2/app/job/impl/TestTaskAttempt.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/test/java/org/apache/hadoop/mapreduce/v2/app/job/impl/TestTaskAttempt.java index 6b4656aaf4..1ed8098988 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/test/java/org/apache/hadoop/mapreduce/v2/app/job/impl/TestTaskAttempt.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/test/java/org/apache/hadoop/mapreduce/v2/app/job/impl/TestTaskAttempt.java @@ -774,6 +774,14 @@ public void testAppDiognosticEventOnUnassignedTask() throws Exception { assertFalse( "InternalError occurred trying to handle TA_DIAGNOSTICS_UPDATE on assigned task", eventHandler.internalError); + try { + taImpl.handle(new TaskAttemptEvent(attemptId, + TaskAttemptEventType.TA_KILL)); + Assert.assertTrue("No exception on UNASSIGNED STATE KILL event", true); + } catch (Exception e) { + Assert.assertFalse( + "Exception not expected for UNASSIGNED STATE KILL event", true); + } } @Test