Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 29414200B62 for ; Fri, 12 Aug 2016 16:47:06 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 27F1A160AB0; Fri, 12 Aug 2016 14:47:06 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 47AD6160A85 for ; Fri, 12 Aug 2016 16:47:05 +0200 (CEST) Received: (qmail 20283 invoked by uid 500); 12 Aug 2016 14:47:04 -0000 Mailing-List: contact common-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list common-commits@hadoop.apache.org Received: (qmail 20274 invoked by uid 99); 12 Aug 2016 14:47:04 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 12 Aug 2016 14:47:04 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 2A5C1E0252; Fri, 12 Aug 2016 14:47:04 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: naganarasimha_gr@apache.org To: common-commits@hadoop.apache.org Message-Id: <5719efb77a9f446b85c0f136baccf762@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: hadoop git commit: YARN-4833. For Queue AccessControlException client retries multiple times on both RM. Contributed by Bibin A Chundatt Date: Fri, 12 Aug 2016 14:47:04 +0000 (UTC) archived-at: Fri, 12 Aug 2016 14:47:06 -0000 Repository: hadoop Updated Branches: refs/heads/branch-2 20a8ff0a8 -> b63d3dcac YARN-4833. For Queue AccessControlException client retries multiple times on both RM. Contributed by Bibin A Chundatt Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/b63d3dca Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/b63d3dca Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/b63d3dca Branch: refs/heads/branch-2 Commit: b63d3dcac92823eb4f115242621873ca498535f3 Parents: 20a8ff0 Author: Naganarasimha Authored: Fri Aug 12 20:16:15 2016 +0530 Committer: Naganarasimha Committed: Fri Aug 12 20:16:15 2016 +0530 ---------------------------------------------------------------------- .../server/resourcemanager/RMAppManager.java | 9 ++-- .../server/resourcemanager/TestAppManager.java | 43 ++++++++++++++++++++ 2 files changed, 47 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/b63d3dca/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMAppManager.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMAppManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMAppManager.java index 279f0b3..c1d5cd3 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMAppManager.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMAppManager.java @@ -285,7 +285,7 @@ public class RMAppManager implements EventHandler, @SuppressWarnings("unchecked") protected void submitApplication( ApplicationSubmissionContext submissionContext, long submitTime, - String user) throws YarnException, AccessControlException { + String user) throws YarnException { ApplicationId applicationId = submissionContext.getApplicationId(); RMAppImpl application = @@ -334,8 +334,7 @@ public class RMAppManager implements EventHandler, private RMAppImpl createAndPopulateNewRMApp( ApplicationSubmissionContext submissionContext, long submitTime, - String user, boolean isRecovery) - throws YarnException, AccessControlException { + String user, boolean isRecovery) throws YarnException { // Do queue mapping if (!isRecovery) { if (rmContext.getQueuePlacementManager() != null) { @@ -378,9 +377,9 @@ public class RMAppManager implements EventHandler, SchedulerUtils.toAccessType(QueueACL.ADMINISTER_QUEUE), applicationId.toString(), appName, Server.getRemoteAddress(), null))) { - throw new AccessControlException( + throw RPCUtil.getRemoteException(new AccessControlException( "User " + user + " does not have permission to submit " - + applicationId + " to queue " + submissionContext.getQueue()); + + applicationId + " to queue " + submissionContext.getQueue())); } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/b63d3dca/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestAppManager.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestAppManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestAppManager.java index 075df47..f6c3175 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestAppManager.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestAppManager.java @@ -39,14 +39,18 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.io.DataOutputBuffer; +import org.apache.hadoop.security.AccessControlException; import org.apache.hadoop.security.Credentials; import org.apache.hadoop.service.Service; import org.apache.hadoop.yarn.MockApps; +import org.apache.hadoop.yarn.api.protocolrecords.SubmitApplicationRequest; import org.apache.hadoop.yarn.api.records.ApplicationAccessType; import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; +import org.apache.hadoop.yarn.api.records.Priority; import org.apache.hadoop.yarn.api.records.Resource; +import org.apache.hadoop.yarn.api.records.ResourceRequest; import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.event.AsyncDispatcher; import org.apache.hadoop.yarn.event.Dispatcher; @@ -69,8 +73,10 @@ import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.AMLivelinessM import org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.ContainerAllocationExpirer; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceScheduler; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.YarnScheduler; +import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler; import org.apache.hadoop.yarn.server.resourcemanager.security.ClientToAMTokenSecretManagerInRM; import org.apache.hadoop.yarn.server.security.ApplicationACLsManager; +import org.apache.hadoop.yarn.util.Records; import org.apache.hadoop.yarn.util.resource.ResourceCalculator; import org.apache.hadoop.yarn.util.resource.Resources; import org.junit.After; @@ -276,6 +282,43 @@ public class TestAppManager{ } @Test + public void testQueueSubmitWithNoPermission() throws IOException { + YarnConfiguration conf = new YarnConfiguration(); + conf.set(YarnConfiguration.RM_SCHEDULER, + CapacityScheduler.class.getCanonicalName()); + conf.set("yarn.scheduler.capacity.root.acl_submit_applications", " "); + conf.set("yarn.scheduler.capacity.root.acl_administer_queue", " "); + + conf.set("yarn.scheduler.capacity.root.default.acl_submit_applications", + " "); + conf.set("yarn.scheduler.capacity.root.default.acl_administer_queue", " "); + conf.set(YarnConfiguration.YARN_ACL_ENABLE, "true"); + MockRM mockRM = new MockRM(conf); + ClientRMService rmService = mockRM.getClientRMService(); + SubmitApplicationRequest req = + Records.newRecord(SubmitApplicationRequest.class); + ApplicationSubmissionContext sub = + Records.newRecord(ApplicationSubmissionContext.class); + sub.setApplicationId(appId); + ResourceRequest resReg = + ResourceRequest.newInstance(Priority.newInstance(0), + ResourceRequest.ANY, Resource.newInstance(1024, 1), 1); + sub.setAMContainerResourceRequest(resReg); + req.setApplicationSubmissionContext(sub); + try { + rmService.submitApplication(req); + } catch (Exception e) { + if (e instanceof YarnException) { + Assert.assertTrue(e.getCause() instanceof AccessControlException); + } else { + Assert.fail("Yarn exception is expected"); + } + } finally { + mockRM.close(); + } + } + + @Test public void testRMAppRetireSome() throws Exception { long now = System.currentTimeMillis(); --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org For additional commands, e-mail: common-commits-help@hadoop.apache.org