From beb65c9465806114237aa271b07b31ff3c1f4404 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. --- 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 51715cf231237..0b733a4a40c3a 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -413,12 +413,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 3e16165ae26eb..cce0fe57aa75b 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 @@ -315,6 +315,9 @@ public GetNewApplicationResponse getNewApplication( 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 8031759e4a2db..6a0b99c7461ca 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 void testGetApplicationReport() throws Exception { 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(); }