diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/Client.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/Client.java index 61879d0..4866747 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/Client.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/Client.java @@ -645,7 +645,19 @@ public boolean run() throws IOException, YarnException { + ", nodeNumContainers=" + node.getNumContainers()); } - QueueInfo queueInfo = yarnClient.getQueueInfo(this.amQueue); + QueueInfo queueInfo = null; + List allQueuesInfo = yarnClient.getAllQueues(); + for (QueueInfo qInfo : allQueuesInfo) { + if (qInfo.getQueueName().equals(this.amQueue)) { + queueInfo = qInfo; + break; + } + } + if (queueInfo == null) { + String message = "Unknown queueName '" + this.amQueue + "'"; + LOG.error(message); + throw new IOException(message); + } LOG.info("Queue info" + ", queueName=" + queueInfo.getQueueName() + ", queueCurrentCapacity=" + queueInfo.getCurrentCapacity() diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/test/java/org/apache/hadoop/yarn/applications/distributedshell/TestDistributedShell.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/test/java/org/apache/hadoop/yarn/applications/distributedshell/TestDistributedShell.java index 3a98a22..7adad40 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/test/java/org/apache/hadoop/yarn/applications/distributedshell/TestDistributedShell.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/test/java/org/apache/hadoop/yarn/applications/distributedshell/TestDistributedShell.java @@ -1623,4 +1623,28 @@ public void testDistributedShellAMResourcesWithUnknownResource() client.init(args); client.run(); } + + @Test + public void testDistributedShellWithUnknownQueue() + throws Exception { + String[] args = { + "--jar", + APPMASTER_JAR, + "--num_containers", + "1", + "--shell_command", + Shell.WINDOWS ? "dir" : "ls", + "--queue", + "unknown" + }; + Client client = new Client(new Configuration(yarnCluster.getConfig())); + client.init(args); + try { + client.run(); + Assert.fail("Client run should throw error"); + } catch (IOException e) { + Assert.assertTrue("The throw exception is not expected", + e.getMessage().contains("Unknown queueName 'unknown'")); + } + } }