From 19b22c4385a8cf0f89a2ad939380cfd3f033ffdc Mon Sep 17 00:00:00 2001 From: Eric Yang Date: Mon, 18 Mar 2019 13:16:34 -0400 Subject: [PATCH] YARN-9385. Fixed ApiServiceClient to use current UGI. Contributed by Eric Yang --- .../yarn/service/client/ApiServiceClient.java | 13 ++++++++----- .../yarn/service/client/TestApiServiceClient.java | 9 +++++++++ 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/service/client/ApiServiceClient.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/service/client/ApiServiceClient.java index 008f49792d..94f03c347e 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/service/client/ApiServiceClient.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-api/src/main/java/org/apache/hadoop/yarn/service/client/ApiServiceClient.java @@ -151,7 +151,7 @@ List getRMHAWebAddresses(Configuration conf) { * @return URI to API Service * @throws IOException */ - private String getServicePath(String appName) throws IOException { + protected String getServicePath(String appName) throws IOException { String url = getRMWebAddress(); StringBuilder api = new StringBuilder(); api.append(url) @@ -203,12 +203,15 @@ private String getComponentsPath(String appName) throws IOException { return api.toString(); } - private void appendUserNameIfRequired(StringBuilder builder) { + private void appendUserNameIfRequired(StringBuilder builder) + throws IOException { Configuration conf = getConfig(); - if (conf.get("hadoop.http.authentication.type").equalsIgnoreCase( - "simple")) { + if (conf.get("hadoop.http.authentication.type") + .equalsIgnoreCase("simple")) { + String username = UserGroupInformation.getCurrentUser() + .getShortUserName(); builder.append("?user.name=").append(UrlEncoded - .encodeString(System.getProperty("user.name"))); + .encodeString(username)); } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-api/src/test/java/org/apache/hadoop/yarn/service/client/TestApiServiceClient.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-api/src/test/java/org/apache/hadoop/yarn/service/client/TestApiServiceClient.java index 6cf08807c1..0ffeb456c8 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-api/src/test/java/org/apache/hadoop/yarn/service/client/TestApiServiceClient.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-api/src/test/java/org/apache/hadoop/yarn/service/client/TestApiServiceClient.java @@ -27,6 +27,7 @@ import javax.servlet.http.HttpServletResponse; import com.google.common.collect.Lists; + import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.yarn.exceptions.YarnException; import org.eclipse.jetty.server.Server; @@ -310,5 +311,13 @@ public void testComponentsUpgrade() { } } + @Test + public void testNoneSecureApiClient() throws IOException { + String url = asc.getServicePath("/foobar"); + assertTrue("User.name flag is missing in service path.", + url.contains("user.name")); + assertTrue("User.name flag is not matching JVM user.", + url.contains(System.getProperty("user.name"))); + } }