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 8b28d65..e6c25ad 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 @@ -29,6 +29,7 @@ import java.util.Collection; import java.util.Collections; import java.util.EnumSet; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -765,21 +766,14 @@ public GetClusterMetricsResponse getClusterMetrics( response.setClusterMetrics(ymetrics); return response; } - - @Override - public GetApplicationsResponse getApplications( - GetApplicationsRequest request) throws YarnException { - return getApplications(request, true); - } /** * Get applications matching the {@link GetApplicationsRequest}. If * caseSensitive is set to false, applicationTypes in * GetApplicationRequest are expected to be in all-lowercase */ - @Private - public GetApplicationsResponse getApplications( - GetApplicationsRequest request, boolean caseSensitive) + @Override + public GetApplicationsResponse getApplications(GetApplicationsRequest request) throws YarnException { UserGroupInformation callerUGI; try { @@ -789,7 +783,7 @@ public GetApplicationsResponse getApplications( throw RPCUtil.getRemoteException(ie); } - Set applicationTypes = request.getApplicationTypes(); + Set applicationTypes = getLowerCasedAppTypes(request); EnumSet applicationStates = request.getApplicationStates(); Set users = request.getUsers(); @@ -853,9 +847,8 @@ public void remove() { } if (applicationTypes != null && !applicationTypes.isEmpty()) { - String appTypeToMatch = caseSensitive - ? application.getApplicationType() - : StringUtils.toLowerCase(application.getApplicationType()); + String appTypeToMatch = + StringUtils.toLowerCase(application.getApplicationType()); if (!applicationTypes.contains(appTypeToMatch)) { continue; } @@ -915,6 +908,17 @@ public void remove() { return response; } + private Set getLowerCasedAppTypes(GetApplicationsRequest request) { + Set applicationTypes = new HashSet<>(); + if (request.getApplicationTypes() != null && !request.getApplicationTypes() + .isEmpty()) { + for (String type : request.getApplicationTypes()) { + applicationTypes.add(StringUtils.toLowerCase(type)); + } + } + return applicationTypes; + } + @Override public GetClusterNodesResponse getClusterNodes(GetClusterNodesRequest request) throws YarnException { diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java index 6ce47de..7ffe106 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java @@ -568,7 +568,7 @@ public AppsInfo getApps(@Context HttpServletRequest hsr, List appReports = null; try { - appReports = rm.getClientRMService().getApplications(request, false) + appReports = rm.getClientRMService().getApplications(request) .getApplicationList(); } catch (YarnException e) { LOG.error("Unable to retrieve apps from ClientRMService", e); 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 9ce02bc..ea733a4 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 @@ -994,6 +994,18 @@ public void handle(Event event) {} Assert.assertEquals(appId2, getAllApplicationsResponse.getApplicationList() .get(0).getApplicationId()); + + // Test query with uppercase appType also works + appTypes = new HashSet(); + appTypes.add("MATCHTYPE"); + getAllAppsRequest = GetApplicationsRequest.newInstance(appTypes); + getAllApplicationsResponse = + rmService.getApplications(getAllAppsRequest); + Assert.assertEquals(1, + getAllApplicationsResponse.getApplicationList().size()); + Assert.assertEquals(appId2, + getAllApplicationsResponse.getApplicationList() + .get(0).getApplicationId()); } @Test @@ -1087,7 +1099,7 @@ public void handle(Event event) {} assertEquals("Incorrect number of applications in queue", 2, rmService.getApplications(request).getApplicationList().size()); assertEquals("Incorrect number of applications in queue", 2, - rmService.getApplications(request, false).getApplicationList().size()); + rmService.getApplications(request).getApplicationList().size()); queueSet.add(queues[1]); assertEquals("Incorrect number of applications in queue", 3, diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServices.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServices.java index 4f7ab54..f93a3fc 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServices.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServices.java @@ -22,7 +22,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import static org.mockito.Matchers.anyBoolean; import static org.mockito.Matchers.isA; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -647,8 +646,8 @@ public void testAppsRace() throws Exception { when(mockAppsResponse.getApplicationList()) .thenReturn(Arrays.asList(new ApplicationReport[] { mockReport })); ClientRMService mockClientSvc = mock(ClientRMService.class); - when(mockClientSvc.getApplications(isA(GetApplicationsRequest.class), - anyBoolean())).thenReturn(mockAppsResponse); + when(mockClientSvc.getApplications(isA(GetApplicationsRequest.class))) + .thenReturn(mockAppsResponse); ResourceManager mockRM = mock(ResourceManager.class); RMContextImpl rmContext = new RMContextImpl(null, null, null, null, null, null, null, null, null, null);