From 792b9c0eaf2f5a4a912bd333046f6498085316f1 Mon Sep 17 00:00:00 2001 From: Junping Du Date: Fri, 28 Aug 2015 05:57:34 -0700 Subject: [PATCH] YARN-1556. NPE getting application report with a null appId. Contributed by Weiwei Yang. (cherry picked from commit beb65c9465806114237aa271b07b31ff3c1f4404) --- hadoop-yarn-project/CHANGES.txt | 7 +++++-- .../yarn/server/resourcemanager/ClientRMService.java | 3 +++ .../server/resourcemanager/TestClientRMService.java | 12 ++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index 13f69a97124..e92e4e6e0e7 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -361,12 +361,15 @@ Release 2.8.0 - UNRELEASED YARN-4026. Refactored ContainerAllocator to accept a list of priorites rather than a single priority. (Wangda Tan via jianhe) - YARN-4031. Add JvmPauseMonitor to ApplicationHistoryServer and - WebAppProxyServer (djp via rkanter) + YARN-4031. Add JvmPauseMonitor to ApplicationHistoryServer and + WebAppProxyServer (djp via rkanter) YARN-4057. If ContainersMonitor is not enabled, only print related log info one time. (Jun Gong via zxu) + YARN-1556. NPE getting application report with a null appId. (Weiwei Yang via + junping_du) + OPTIMIZATIONS YARN-3339. TestDockerContainerExecutor should pull a single image and not diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java index ce385682c44..e1633cccdf8 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java @@ -314,6 +314,9 @@ public class ClientRMService extends AbstractService implements public GetApplicationReportResponse getApplicationReport( GetApplicationReportRequest request) throws YarnException { ApplicationId applicationId = request.getApplicationId(); + if (applicationId == null) { + throw new ApplicationNotFoundException("Invalid application id: null"); + } UserGroupInformation callerUGI; try { diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestClientRMService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestClientRMService.java index 8031759e4a2..6a0b99c7461 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestClientRMService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestClientRMService.java @@ -333,6 +333,18 @@ public class TestClientRMService { report.getApplicationResourceUsageReport(); Assert.assertEquals(10, usageReport.getMemorySeconds()); Assert.assertEquals(3, usageReport.getVcoreSeconds()); + + // if application id is null + GetApplicationReportRequest invalidRequest = recordFactory + .newRecordInstance(GetApplicationReportRequest.class); + invalidRequest.setApplicationId(null); + try { + rmService.getApplicationReport(invalidRequest); + } catch (YarnException e) { + // rmService should return a ApplicationNotFoundException + // when a null application id is provided + Assert.assertTrue(e instanceof ApplicationNotFoundException); + } } finally { rmService.close(); }