Browse Source

MAPREDUCE-3290. Fixed a NPE in ClientRMService.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1190162 13f79535-47bb-0310-9956-ffa450edef68
Arun Murthy 13 years ago
parent
commit
69dd284452

+ 2 - 0
hadoop-mapreduce-project/CHANGES.txt

@@ -1833,6 +1833,8 @@ Release 0.23.0 - Unreleased
     MAPREDUCE-3258. Fixed AM & JobHistory web-ui to display counters properly.
     (Siddharth Seth via acmurthy)
 
+    MAPREDUCE-3290. Fixed a NPE in ClientRMService. (acmurthy) 
+
 Release 0.22.0 - Unreleased
 
   INCOMPATIBLE CHANGES

+ 15 - 4
hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java

@@ -59,6 +59,7 @@ import org.apache.hadoop.yarn.api.records.ApplicationReport;
 import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
 import org.apache.hadoop.yarn.api.records.NodeReport;
 import org.apache.hadoop.yarn.api.records.QueueInfo;
+import org.apache.hadoop.yarn.api.records.Resource;
 import org.apache.hadoop.yarn.api.records.YarnClusterMetrics;
 import org.apache.hadoop.yarn.conf.YarnConfiguration;
 import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
@@ -67,10 +68,12 @@ import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
 import org.apache.hadoop.yarn.ipc.RPCUtil;
 import org.apache.hadoop.yarn.ipc.YarnRPC;
 import org.apache.hadoop.yarn.server.resourcemanager.RMAuditLogger.AuditConstants;
+import org.apache.hadoop.yarn.server.resourcemanager.resource.Resources;
 import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMApp;
 import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppEvent;
 import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppEventType;
 import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNode;
+import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerNodeReport;
 import org.apache.hadoop.yarn.server.resourcemanager.scheduler.YarnScheduler;
 import org.apache.hadoop.yarn.server.resourcemanager.security.authorize.RMPolicyProvider;
 import org.apache.hadoop.yarn.server.security.ApplicationACLsManager;
@@ -396,10 +399,18 @@ public class ClientRMService extends AbstractService implements
     report.setRackName(rmNode.getRackName());
     report.setCapability(rmNode.getTotalCapability());
     report.setNodeHealthStatus(rmNode.getNodeHealthStatus());
-    org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerNodeReport schedulerNodeReport = scheduler
-        .getNodeReport(rmNode.getNodeID());
-    report.setUsed(schedulerNodeReport.getUsedResource());
-    report.setNumContainers(schedulerNodeReport.getNumContainers());
+    
+    SchedulerNodeReport schedulerNodeReport = 
+        scheduler.getNodeReport(rmNode.getNodeID());
+    Resource used = Resources.none();
+    int numContainers = 0;
+    if (schedulerNodeReport != null) {
+      used = schedulerNodeReport.getUsedResource();
+      numContainers = schedulerNodeReport.getNumContainers();
+    } 
+    report.setUsed(used);
+    report.setNumContainers(numContainers);
+
     return report;
   }