You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by aa...@apache.org on 2019/01/15 04:02:17 UTC

[hadoop] branch trunk updated: YARN-9179. Fix NPE in AbstractYarnScheduler#updateNewContainerInfo.

This is an automated email from the ASF dual-hosted git repository.

aajisaka pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 614af50  YARN-9179. Fix NPE in AbstractYarnScheduler#updateNewContainerInfo.
614af50 is described below

commit 614af50625a8495812dce8da59db0e1aef40b1c0
Author: Akira Ajisaka <aa...@apache.org>
AuthorDate: Tue Jan 15 12:59:59 2019 +0900

    YARN-9179. Fix NPE in AbstractYarnScheduler#updateNewContainerInfo.
---
 .../scheduler/AbstractYarnScheduler.java           | 27 ++++++++++++++--------
 1 file changed, 17 insertions(+), 10 deletions(-)

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/AbstractYarnScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractYarnScheduler.java
index 0ad47bb..a798b97 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractYarnScheduler.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractYarnScheduler.java
@@ -1040,20 +1040,27 @@ public abstract class AbstractYarnScheduler
     for (Map.Entry<ApplicationId, ContainerStatus> c : updateExistContainers) {
       SchedulerApplication<T> app = applications.get(c.getKey());
       ContainerId containerId = c.getValue().getContainerId();
+      if (app == null || app.getCurrentAppAttempt() == null) {
+        continue;
+      }
+      RMContainer rmContainer
+          = app.getCurrentAppAttempt().getRMContainer(containerId);
+      if (rmContainer == null) {
+        continue;
+      }
+      // exposed ports are already set for the container, skip
+      if (rmContainer.getExposedPorts() != null &&
+          rmContainer.getExposedPorts().size() > 0) {
+        continue;
+      }
+
       String strExposedPorts = c.getValue().getExposedPorts();
-      Map<String, List<Map<String, String>>> exposedPorts = null;
       if (null != strExposedPorts && !strExposedPorts.isEmpty()) {
         Gson gson = new Gson();
-        exposedPorts = gson.fromJson(strExposedPorts,
+        Map<String, List<Map<String, String>>> exposedPorts =
+            gson.fromJson(strExposedPorts,
             new TypeToken<Map<String, List<Map<String, String>>>>()
-            {}.getType());
-      }
-
-      RMContainer rmContainer
-          = app.getCurrentAppAttempt().getRMContainer(containerId);
-      if (null != rmContainer &&
-          (null == rmContainer.getExposedPorts()
-              || rmContainer.getExposedPorts().size() == 0)) {
+                {}.getType());
         LOG.info("update exist container " + containerId.getContainerId()
             + ", strExposedPorts = " + strExposedPorts);
         rmContainer.setExposedPorts(exposedPorts);


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org