From 8c7f6b2d4df2e5ca7b766db68213b778d28f198b Mon Sep 17 00:00:00 2001 From: Eric Yang Date: Fri, 18 Jan 2019 13:49:56 -0500 Subject: [PATCH] YARN-9197. Add safe guard against NPE for component instance failure. Contributed by kyungwan nam --- .../service/component/instance/ComponentInstance.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/instance/ComponentInstance.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/instance/ComponentInstance.java index dab1e463c07..66c298d337c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/instance/ComponentInstance.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/instance/ComponentInstance.java @@ -350,8 +350,10 @@ static void handleComponentInstanceRelaunch(ComponentInstance compInstance, // record in ATS LOG.info("Publishing component instance status {} {} ", event.getContainerId(), containerState); + int exitStatus = failureBeforeLaunch || event.getStatus() == null ? + ContainerExitStatus.INVALID : event.getStatus().getExitStatus(); compInstance.serviceTimelinePublisher.componentInstanceFinished( - event.getContainerId(), event.getStatus().getExitStatus(), + event.getContainerId(), exitStatus, containerState, containerDiag); } @@ -366,8 +368,10 @@ static void handleComponentInstanceRelaunch(ComponentInstance compInstance, if (compInstance.timelineServiceEnabled) { // record in ATS + int exitStatus = failureBeforeLaunch || event.getStatus() == null ? + ContainerExitStatus.INVALID : event.getStatus().getExitStatus(); compInstance.serviceTimelinePublisher.componentInstanceFinished( - event.getContainerId(), event.getStatus().getExitStatus(), + event.getContainerId(), exitStatus, containerState, containerDiag); }