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 834bb03fac7..6f765df2647 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 @@ -24,6 +24,7 @@ import java.text.MessageFormat; import java.util.List; import java.util.Map; +import java.security.PrivilegedExceptionAction; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; @@ -649,13 +650,26 @@ public int actionUpgradeComponents(String appName, List components) @Override public int actionCleanUp(String appName, String userName) throws - IOException, YarnException { - ServiceClient sc = new ServiceClient(); - sc.init(getConfig()); - sc.start(); - int result = sc.actionCleanUp(appName, userName); - sc.close(); - return result; + IOException, YarnException, InterruptedException { + UserGroupInformation proxyUser; + UserGroupInformation ugi; + if (UserGroupInformation.isSecurityEnabled()) { + proxyUser = UserGroupInformation.getLoginUser(); + ugi = UserGroupInformation.createProxyUser(userName, proxyUser); + } else { + ugi = UserGroupInformation.createRemoteUser(userName); + } + return ugi.doAs((PrivilegedExceptionAction) () -> { + ServiceClient sc = new ServiceClient(); + try { + sc.init(getConfig()); + sc.start(); + int result = sc.actionCleanUp(appName, userName); + return result; + } finally { + sc.close(); + } + }); } @Override diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/AppAdminClient.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/AppAdminClient.java index b0d737a6443..2fd59a863c8 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/AppAdminClient.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/AppAdminClient.java @@ -281,7 +281,7 @@ public abstract int actionUpgradeComponents(String appName, @Public @Unstable public abstract int actionCleanUp(String appName, String userName) throws - IOException, YarnException; + IOException, YarnException, InterruptedException; @Public @Unstable