From 0e870d7d18900058bfff720ff3b9e3a4a6078e9c Mon Sep 17 00:00:00 2001 From: Arun Murthy Date: Wed, 21 Sep 2011 01:32:14 +0000 Subject: [PATCH] MAPREDUCE-3023. Fixed clients to display queue state correctly. Contributed by Ravi Prakash. git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1173458 13f79535-47bb-0310-9956-ffa450edef68 --- hadoop-mapreduce-project/CHANGES.txt | 3 +++ .../apache/hadoop/mapreduce/TypeConverter.java | 16 +++++++++++++--- .../hadoop/mapreduce/TestTypeConverter.java | 13 +++++++++++++ 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/hadoop-mapreduce-project/CHANGES.txt b/hadoop-mapreduce-project/CHANGES.txt index 62436d3a4a..308014eb07 100644 --- a/hadoop-mapreduce-project/CHANGES.txt +++ b/hadoop-mapreduce-project/CHANGES.txt @@ -1378,6 +1378,9 @@ Release 0.23.0 - Unreleased MAPREDUCE-2998. Fixed a bug in TaskAttemptImpl which caused it to fork bin/mapred too many times. (vinodkv via acmurthy) + MAPREDUCE-3023. Fixed clients to display queue state correctly. (Ravi + Prakash via acmurthy) + Release 0.22.0 - Unreleased INCOMPATIBLE CHANGES diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-common/src/main/java/org/apache/hadoop/mapreduce/TypeConverter.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-common/src/main/java/org/apache/hadoop/mapreduce/TypeConverter.java index a678e4660e..9cbc9ad6d4 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-common/src/main/java/org/apache/hadoop/mapreduce/TypeConverter.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-common/src/main/java/org/apache/hadoop/mapreduce/TypeConverter.java @@ -47,6 +47,7 @@ import org.apache.hadoop.yarn.api.records.ApplicationState; import org.apache.hadoop.yarn.api.records.NodeReport; import org.apache.hadoop.yarn.api.records.QueueACL; +import org.apache.hadoop.yarn.api.records.QueueState; import org.apache.hadoop.yarn.api.records.QueueUserACLInfo; import org.apache.hadoop.yarn.factories.RecordFactory; import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider; @@ -290,6 +291,15 @@ public static org.apache.hadoop.mapred.JobStatus fromYarn( jobFile, trackingUrl); } + public static org.apache.hadoop.mapreduce.QueueState fromYarn( + QueueState state) { + org.apache.hadoop.mapreduce.QueueState qState = + org.apache.hadoop.mapreduce.QueueState.getState( + state.toString().toLowerCase()); + return qState; + } + + public static int fromYarn(JobState state) { switch (state) { case NEW: @@ -431,9 +441,9 @@ public static JobStatus[] fromYarnApps(List applications, public static QueueInfo fromYarn(org.apache.hadoop.yarn.api.records.QueueInfo queueInfo, Configuration conf) { - return new QueueInfo(queueInfo.getQueueName(), - queueInfo.toString(), QueueState.RUNNING, - TypeConverter.fromYarnApps(queueInfo.getApplications(), conf)); + return new QueueInfo(queueInfo.getQueueName(),queueInfo.toString(), + fromYarn(queueInfo.getQueueState()), TypeConverter.fromYarnApps( + queueInfo.getApplications(), conf)); } public static QueueInfo[] fromYarnQueueInfo( diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-common/src/test/java/org/apache/hadoop/mapreduce/TestTypeConverter.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-common/src/test/java/org/apache/hadoop/mapreduce/TestTypeConverter.java index bda7fb9d65..1aeae987c8 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-common/src/test/java/org/apache/hadoop/mapreduce/TestTypeConverter.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-common/src/test/java/org/apache/hadoop/mapreduce/TestTypeConverter.java @@ -19,11 +19,14 @@ import junit.framework.Assert; +import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.api.records.ApplicationState; import org.apache.hadoop.yarn.api.records.ApplicationReport; import org.apache.hadoop.yarn.api.records.impl.pb.ApplicationIdPBImpl; import org.apache.hadoop.yarn.api.records.impl.pb.ApplicationReportPBImpl; +import org.apache.hadoop.yarn.api.records.impl.pb.QueueInfoPBImpl; + import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import org.junit.Test; @@ -67,4 +70,14 @@ public void testFromYarnApplicationReport() { Assert.assertEquals("jobId set incorrectly", 6789, status.getJobID().getId()); Assert.assertEquals("state set incorrectly", JobStatus.State.KILLED, status.getState()); } + + @Test + public void testFromYarnQueueInfo() { + org.apache.hadoop.yarn.api.records.QueueInfo queueInfo = new QueueInfoPBImpl(); + queueInfo.setQueueState(org.apache.hadoop.yarn.api.records.QueueState.STOPPED); + org.apache.hadoop.mapreduce.QueueInfo returned = + TypeConverter.fromYarn(queueInfo, new Configuration()); + Assert.assertEquals("queueInfo translation didn't work.", + returned.getState().toString(), queueInfo.getQueueState().toString().toLowerCase()); + } }