You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by na...@apache.org on 2016/08/11 19:40:16 UTC
hadoop git commit: YARN-4833. For Queue AccessControlException client
retries multiple times on both RM. Contributed by Bibin A Chundatt
Repository: hadoop
Updated Branches:
refs/heads/trunk db719ef12 -> 874577a67
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/874577a6
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/874577a6
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/874577a6
Branch: refs/heads/trunk
Commit: 874577a67df8a49243586909d866034df4e3b276
Parents: db719ef
Author: Naganarasimha <na...@apache.org>
Authored: Fri Aug 12 01:08:24 2016 +0530
Committer: Naganarasimha <na...@apache.org>
Committed: Fri Aug 12 01:09:41 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/874577a6/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 49daedb..136dee0 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<RMAppManagerEvent>,
@SuppressWarnings("unchecked")
protected void submitApplication(
ApplicationSubmissionContext submissionContext, long submitTime,
- String user) throws YarnException, AccessControlException {
+ String user) throws YarnException {
ApplicationId applicationId = submissionContext.getApplicationId();
// Passing start time as -1. It will be eventually set in RMAppImpl
@@ -336,8 +336,7 @@ public class RMAppManager implements EventHandler<RMAppManagerEvent>,
private RMAppImpl createAndPopulateNewRMApp(
ApplicationSubmissionContext submissionContext, long submitTime,
- String user, boolean isRecovery, long startTime)
- throws YarnException, AccessControlException {
+ String user, boolean isRecovery, long startTime) throws YarnException {
// Do queue mapping
if (!isRecovery) {
if (rmContext.getQueuePlacementManager() != null) {
@@ -380,9 +379,9 @@ public class RMAppManager implements EventHandler<RMAppManagerEvent>,
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/874577a6/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 c3d04de..68f1e22 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,9 +73,11 @@ 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.resourcemanager.timelineservice.RMTimelineCollectorManager;
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;
@@ -281,6 +287,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