From common-commits-return-82183-archive-asf-public=cust-asf.ponee.io@hadoop.apache.org Wed May 2 12:08:14 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 546A118065D for ; Wed, 2 May 2018 12:08:13 +0200 (CEST) Received: (qmail 68771 invoked by uid 500); 2 May 2018 10:08:12 -0000 Mailing-List: contact common-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list common-commits@hadoop.apache.org Received: (qmail 68762 invoked by uid 99); 2 May 2018 10:08:12 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 02 May 2018 10:08:12 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 0E14FE0AED; Wed, 2 May 2018 10:08:12 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: wwei@apache.org To: common-commits@hadoop.apache.org Message-Id: <66802c02abd34d6d868276ed6fb64de7@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: hadoop git commit: YARN-8222. Fix potential NPE when gets RMApp from RM context. Contributed by Tao Yang. Date: Wed, 2 May 2018 10:08:12 +0000 (UTC) Repository: hadoop Updated Branches: refs/heads/branch-3.0 01e924a2c -> c2ed61188 YARN-8222. Fix potential NPE when gets RMApp from RM context. Contributed by Tao Yang. (Cherry picked from commit 251f528814c4a4647cac0af6effb9a73135db180) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/c2ed6118 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/c2ed6118 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/c2ed6118 Branch: refs/heads/branch-3.0 Commit: c2ed611885fe935ae0cc47d666e02c06d37279a1 Parents: 01e924a Author: Weiwei Yang Authored: Wed May 2 17:54:46 2018 +0800 Committer: Weiwei Yang Committed: Wed May 2 18:07:34 2018 +0800 ---------------------------------------------------------------------- .../rmcontainer/RMContainerImpl.java | 30 +++++++++++--------- .../scheduler/SchedulerApplicationAttempt.java | 13 +++++---- 2 files changed, 23 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/c2ed6118/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmcontainer/RMContainerImpl.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/rmcontainer/RMContainerImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmcontainer/RMContainerImpl.java index a43459c..c8c312c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmcontainer/RMContainerImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmcontainer/RMContainerImpl.java @@ -45,6 +45,7 @@ import org.apache.hadoop.yarn.event.EventHandler; import org.apache.hadoop.yarn.server.api.protocolrecords.NMContainerStatus; import org.apache.hadoop.yarn.server.resourcemanager.RMContext; import org.apache.hadoop.yarn.server.resourcemanager.nodelabels.RMNodeLabelsManager; +import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMApp; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppRunningOnNodeEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttempt; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptEvent; @@ -708,21 +709,22 @@ public class RMContainerImpl implements RMContainer { private static void updateAttemptMetrics(RMContainerImpl container) { Resource resource = container.getContainer().getResource(); - RMAppAttempt rmAttempt = container.rmContext.getRMApps() - .get(container.getApplicationAttemptId().getApplicationId()) - .getCurrentAppAttempt(); - - if (rmAttempt != null) { - long usedMillis = container.finishTime - container.creationTime; - rmAttempt.getRMAppAttemptMetrics() - .updateAggregateAppResourceUsage(resource, usedMillis); - // If this is a preempted container, update preemption metrics - if (ContainerExitStatus.PREEMPTED == container.finishedStatus - .getExitStatus()) { + RMApp app = container.rmContext.getRMApps() + .get(container.getApplicationAttemptId().getApplicationId()); + if (app != null) { + RMAppAttempt rmAttempt = app.getCurrentAppAttempt(); + if (rmAttempt != null) { + long usedMillis = container.finishTime - container.creationTime; rmAttempt.getRMAppAttemptMetrics() - .updatePreemptionInfo(resource, container); - rmAttempt.getRMAppAttemptMetrics() - .updateAggregatePreemptedAppResourceUsage(resource, usedMillis); + .updateAggregateAppResourceUsage(resource, usedMillis); + // If this is a preempted container, update preemption metrics + if (ContainerExitStatus.PREEMPTED == container.finishedStatus + .getExitStatus()) { + rmAttempt.getRMAppAttemptMetrics() + .updatePreemptionInfo(resource, container); + rmAttempt.getRMAppAttemptMetrics() + .updateAggregatePreemptedAppResourceUsage(resource, usedMillis); + } } } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/c2ed6118/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/SchedulerApplicationAttempt.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/scheduler/SchedulerApplicationAttempt.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/SchedulerApplicationAttempt.java index 15e6ea6..7f912c2 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/SchedulerApplicationAttempt.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/SchedulerApplicationAttempt.java @@ -1167,12 +1167,13 @@ public class SchedulerApplicationAttempt implements SchedulableEntity { return; } - RMAppAttempt attempt = - rmContext.getRMApps().get(attemptId.getApplicationId()) - .getCurrentAppAttempt(); - if (attempt != null) { - attempt.getRMAppAttemptMetrics().incNumAllocatedContainers(containerType, - requestType); + RMApp app = rmContext.getRMApps().get(attemptId.getApplicationId()); + if (app != null) { + RMAppAttempt attempt = app.getCurrentAppAttempt(); + if (attempt != null) { + attempt.getRMAppAttemptMetrics() + .incNumAllocatedContainers(containerType, requestType); + } } } --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org For additional commands, e-mail: common-commits-help@hadoop.apache.org