MAPREDUCE-2337. Remove dependence of public MapReduce API on classes in server package.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/mapreduce/trunk@1090104 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/CHANGES.txt b/CHANGES.txt
index ccfa229..52bd5d3 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -317,6 +317,9 @@
     MAPREDUCE-1159.  Limit Job name in web UI to be 80 char long.  (Harsh J
     Chouraria via szetszwo)
 
+    MAPREDUCE-2337. Remove dependence of public MapReduce API on classes in
+    server package. (tomwhite)
+
   OPTIMIZATIONS
 
     MAPREDUCE-1354. Enhancements to JobTracker for better performance and
diff --git a/src/contrib/mumak/src/test/org/apache/hadoop/mapred/MockSimulatorJobTracker.java b/src/contrib/mumak/src/test/org/apache/hadoop/mapred/MockSimulatorJobTracker.java
index 9c5169a..df84fad 100644
--- a/src/contrib/mumak/src/test/org/apache/hadoop/mapred/MockSimulatorJobTracker.java
+++ b/src/contrib/mumak/src/test/org/apache/hadoop/mapred/MockSimulatorJobTracker.java
@@ -44,6 +44,7 @@
 import org.apache.hadoop.mapreduce.TaskReport;
 import org.apache.hadoop.mapreduce.TaskTrackerInfo;
 import org.apache.hadoop.mapreduce.TaskType;
+import org.apache.hadoop.mapreduce.Cluster.JobTrackerStatus;
 import org.apache.hadoop.mapreduce.protocol.ClientProtocol;
 import org.apache.hadoop.tools.rumen.TaskInfo;
 import org.apache.hadoop.tools.rumen.MapTaskAttemptInfo;
@@ -384,6 +385,11 @@
       throws IOException, InterruptedException {
     throw new UnsupportedOperationException();
   }
+  
+  @Override
+  public JobTrackerStatus getJobTrackerStatus() {
+    throw new UnsupportedOperationException();
+  }
 
   @Override
   public QueueInfo getQueue(String queueName) throws IOException,
diff --git a/src/java/org/apache/hadoop/mapred/ClusterStatus.java b/src/java/org/apache/hadoop/mapred/ClusterStatus.java
index 4e35775..63de0fb 100644
--- a/src/java/org/apache/hadoop/mapred/ClusterStatus.java
+++ b/src/java/org/apache/hadoop/mapred/ClusterStatus.java
@@ -31,6 +31,7 @@
 import org.apache.hadoop.io.WritableUtils;
 import org.apache.hadoop.mapreduce.ClusterMetrics;
 import org.apache.hadoop.mapreduce.TaskTrackerInfo;
+import org.apache.hadoop.mapreduce.Cluster.JobTrackerStatus;
 
 /**
  * Status information on the current state of the Map-Reduce cluster.
@@ -381,10 +382,21 @@
    * as {@link JobTracker.State}
    * 
    * @return the current state of the <code>JobTracker</code>.
+   * @deprecated Use {@link #getJobTrackerStatus()} instead.
    */
+  @Deprecated
   public JobTracker.State getJobTrackerState() {
     return state;
   }
+  
+  /**
+   * Get the JobTracker's status.
+   * 
+   * @return {@link JobTrackerStatus} of the JobTracker
+   */
+  public JobTrackerStatus getJobTrackerStatus() {
+    return JobTrackerStatus.valueOf(state.name());
+  }
 
   /**
    * Gets the list of blacklisted trackers along with reasons for blacklisting.
diff --git a/src/java/org/apache/hadoop/mapred/JobTracker.java b/src/java/org/apache/hadoop/mapred/JobTracker.java
index f0ee76f..b6496bb 100644
--- a/src/java/org/apache/hadoop/mapred/JobTracker.java
+++ b/src/java/org/apache/hadoop/mapred/JobTracker.java
@@ -83,6 +83,7 @@
 import org.apache.hadoop.mapreduce.QueueInfo;
 import org.apache.hadoop.mapreduce.TaskTrackerInfo;
 import org.apache.hadoop.mapreduce.TaskType;
+import org.apache.hadoop.mapreduce.Cluster.JobTrackerStatus;
 import org.apache.hadoop.mapreduce.jobhistory.JobHistory;
 import org.apache.hadoop.mapreduce.protocol.ClientProtocol;
 import org.apache.hadoop.mapreduce.security.token.DelegationTokenRenewal;
@@ -90,6 +91,7 @@
 import org.apache.hadoop.mapreduce.security.token.delegation.DelegationTokenIdentifier;
 import org.apache.hadoop.mapreduce.security.token.delegation.DelegationTokenSecretManager;
 import org.apache.hadoop.mapreduce.server.jobtracker.JTConfig;
+import org.apache.hadoop.mapreduce.server.jobtracker.State;
 import org.apache.hadoop.mapreduce.server.jobtracker.TaskTracker;
 import org.apache.hadoop.mapreduce.util.ConfigUtil;
 import org.apache.hadoop.mapreduce.util.MRAsyncDiskService;
@@ -3241,11 +3243,20 @@
       getBlacklistedTrackerCount(), getExcludedNodes().size()) ;
   }
 
+  /**
+   * @deprecated Use {@link #getJobTrackerStatus()} instead.
+   */
+  @Deprecated
   public org.apache.hadoop.mapreduce.server.jobtracker.State 
       getJobTrackerState() {
     return org.apache.hadoop.mapreduce.server.jobtracker.
       State.valueOf(state.name());
   }
+ 
+  @Override
+  public JobTrackerStatus getJobTrackerStatus() {
+    return JobTrackerStatus.valueOf(state.name());
+  }
   
   public long getTaskTrackerExpiryInterval() {
     return tasktrackerExpiryInterval;
diff --git a/src/java/org/apache/hadoop/mapred/LocalJobRunner.java b/src/java/org/apache/hadoop/mapred/LocalJobRunner.java
index aa52622..d28faca 100644
--- a/src/java/org/apache/hadoop/mapred/LocalJobRunner.java
+++ b/src/java/org/apache/hadoop/mapred/LocalJobRunner.java
@@ -48,6 +48,7 @@
 import org.apache.hadoop.mapreduce.TaskCompletionEvent;
 import org.apache.hadoop.mapreduce.TaskTrackerInfo;
 import org.apache.hadoop.mapreduce.TaskType;
+import org.apache.hadoop.mapreduce.Cluster.JobTrackerStatus;
 import org.apache.hadoop.mapreduce.filecache.DistributedCache;
 import org.apache.hadoop.mapreduce.filecache.TaskDistributedCacheManager;
 import org.apache.hadoop.mapreduce.filecache.TrackerDistributedCacheManager;
@@ -659,9 +660,17 @@
         reduce_tasks, 0, 0, 1, 1, jobs.size(), 1, 0, 0);
   }
 
+  /**
+   * @deprecated Use {@link #getJobTrackerStatus()} instead.
+   */
+  @Deprecated
   public State getJobTrackerState() throws IOException, InterruptedException {
     return State.RUNNING;
   }
+  
+  public JobTrackerStatus getJobTrackerStatus() {
+    return JobTrackerStatus.RUNNING;
+  }
 
   public long getTaskTrackerExpiryInterval() throws IOException, InterruptedException {
     return 0;
diff --git a/src/java/org/apache/hadoop/mapreduce/Cluster.java b/src/java/org/apache/hadoop/mapreduce/Cluster.java
index 223b277..1f4067b 100644
--- a/src/java/org/apache/hadoop/mapreduce/Cluster.java
+++ b/src/java/org/apache/hadoop/mapreduce/Cluster.java
@@ -52,6 +52,10 @@
 @InterfaceAudience.Public
 @InterfaceStability.Evolving
 public class Cluster {
+  
+  @InterfaceStability.Evolving
+  public static enum JobTrackerStatus {INITIALIZING, RUNNING};
+  
   private ClientProtocol client;
   private UserGroupInformation ugi;
   private Configuration conf;
@@ -311,12 +315,26 @@
    * @return {@link State} of the JobTracker
    * @throws IOException
    * @throws InterruptedException
+   * @deprecated Use {@link #getJobTrackerStatus()} instead.
    */
+  @Deprecated
   public State getJobTrackerState() throws IOException, InterruptedException {
     return client.getJobTrackerState();
   }
   
   /**
+   * Get the JobTracker's status.
+   * 
+   * @return {@link JobTrackerStatus} of the JobTracker
+   * @throws IOException
+   * @throws InterruptedException
+   */
+  public JobTrackerStatus getJobTrackerStatus() throws IOException,
+      InterruptedException {
+    return client.getJobTrackerStatus();
+  }
+  
+  /**
    * Get the tasktracker expiry interval for the cluster
    * @return the expiry interval in msec
    */
diff --git a/src/java/org/apache/hadoop/mapreduce/protocol/ClientProtocol.java b/src/java/org/apache/hadoop/mapreduce/protocol/ClientProtocol.java
index 700919b..ac5275a 100644
--- a/src/java/org/apache/hadoop/mapreduce/protocol/ClientProtocol.java
+++ b/src/java/org/apache/hadoop/mapreduce/protocol/ClientProtocol.java
@@ -25,6 +25,7 @@
 import org.apache.hadoop.mapreduce.security.token.delegation.DelegationTokenSelector;
 import org.apache.hadoop.io.Text;
 import org.apache.hadoop.ipc.VersionedProtocol;
+import org.apache.hadoop.mapreduce.Cluster.JobTrackerStatus;
 import org.apache.hadoop.mapreduce.ClusterMetrics;
 import org.apache.hadoop.mapreduce.Counters;
 import org.apache.hadoop.mapreduce.JobID;
@@ -111,8 +112,10 @@
    * Version 34: Modified submitJob to use Credentials instead of TokenStorage.
    * Version 35: Added the method getQueueAdmins(queueName) as part of
    *             MAPREDUCE-1664.
+   * Version 36: Added the method getJobTrackerStatus() as part of
+   *             MAPREDUCE-2337.
    */
-  public static final long versionID = 35L;
+  public static final long versionID = 36L;
 
   /**
    * Allocate a name for the job.
@@ -142,9 +145,21 @@
    * @return {@link State} of the JobTracker
    * @throws IOException
    * @throws InterruptedException
+   * @deprecated Use {@link #getJobTrackerStatus()} instead.
    */
+  @Deprecated
   public State getJobTrackerState() throws IOException, InterruptedException;
-  
+
+  /**
+   * Get the JobTracker's status.
+   * 
+   * @return {@link JobTrackerStatus} of the JobTracker
+   * @throws IOException
+   * @throws InterruptedException
+   */
+  public JobTrackerStatus getJobTrackerStatus() throws IOException,
+    InterruptedException;
+
   public long getTaskTrackerExpiryInterval() throws IOException,
                                                InterruptedException;
   
diff --git a/src/java/org/apache/hadoop/mapreduce/server/jobtracker/State.java b/src/java/org/apache/hadoop/mapreduce/server/jobtracker/State.java
index 10f8adb..88d9fdc 100644
--- a/src/java/org/apache/hadoop/mapreduce/server/jobtracker/State.java
+++ b/src/java/org/apache/hadoop/mapreduce/server/jobtracker/State.java
@@ -19,12 +19,15 @@
 
 import org.apache.hadoop.classification.InterfaceAudience;
 import org.apache.hadoop.classification.InterfaceStability;
+import org.apache.hadoop.mapreduce.Cluster.JobTrackerStatus;
 
 /**
- * Describes the state of JobTracker 
+ * Describes the state of JobTracker
+ * @deprecated Use {@link JobTrackerStatus} instead.
  */
 @InterfaceAudience.Public
 @InterfaceStability.Evolving
+@Deprecated
 public enum State {
   INITIALIZING, RUNNING;
 }
diff --git a/src/test/mapred/org/apache/hadoop/mapred/MiniMRCluster.java b/src/test/mapred/org/apache/hadoop/mapred/MiniMRCluster.java
index 3762f84..7581f8b 100644
--- a/src/test/mapred/org/apache/hadoop/mapred/MiniMRCluster.java
+++ b/src/test/mapred/org/apache/hadoop/mapred/MiniMRCluster.java
@@ -29,6 +29,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.mapreduce.Cluster.JobTrackerStatus;
 import org.apache.hadoop.mapreduce.MRConfig;
 import org.apache.hadoop.mapreduce.TaskType;
 import org.apache.hadoop.mapreduce.server.jobtracker.JTConfig;
@@ -646,8 +647,8 @@
     ClusterStatus status = null;
     if (jobTracker.isUp()) {
       status = jobTracker.getJobTracker().getClusterStatus(false);
-      while (jobTracker.isActive() && status.getJobTrackerState() 
-             == JobTracker.State.INITIALIZING) {
+      while (jobTracker.isActive() && status.getJobTrackerStatus() 
+             == JobTrackerStatus.INITIALIZING) {
         try {
           LOG.info("JobTracker still initializing. Waiting.");
           Thread.sleep(1000);
diff --git a/src/test/mapred/org/apache/hadoop/mapred/TestRecoveryManager.java b/src/test/mapred/org/apache/hadoop/mapred/TestRecoveryManager.java
index b77e9d7..c446af4 100644
--- a/src/test/mapred/org/apache/hadoop/mapred/TestRecoveryManager.java
+++ b/src/test/mapred/org/apache/hadoop/mapred/TestRecoveryManager.java
@@ -32,6 +32,7 @@
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
 import org.apache.hadoop.mapred.JobTracker.RecoveryManager;
+import org.apache.hadoop.mapreduce.Cluster.JobTrackerStatus;
 import org.apache.hadoop.mapreduce.MRConfig;
 
 import static org.apache.hadoop.mapred.QueueManagerTestUtils.createQueuesConfigFile;
@@ -131,7 +132,7 @@
     
     // check if the jobtracker came up or not
     assertEquals("JobTracker crashed!", 
-                 JobTracker.State.RUNNING, status.getJobTrackerState());
+                 JobTrackerStatus.RUNNING, status.getJobTrackerStatus());
 
     // assert the no of recovered jobs
     assertEquals("No of recovered jobs not correct",
diff --git a/src/test/mapred/org/apache/hadoop/mapred/UtilsForTests.java b/src/test/mapred/org/apache/hadoop/mapred/UtilsForTests.java
index 8bac2b9..08c81b7 100644
--- a/src/test/mapred/org/apache/hadoop/mapred/UtilsForTests.java
+++ b/src/test/mapred/org/apache/hadoop/mapred/UtilsForTests.java
@@ -50,6 +50,7 @@
 import org.apache.hadoop.mapred.SortValidator.RecordStatsChecker.NonSplitableSequenceFileInputFormat;
 import org.apache.hadoop.mapred.lib.IdentityMapper;
 import org.apache.hadoop.mapred.lib.IdentityReducer;
+import org.apache.hadoop.mapreduce.Cluster.JobTrackerStatus;
 import org.apache.hadoop.mapreduce.server.jobtracker.JTConfig;
 import org.apache.hadoop.util.StringUtils;
 
@@ -246,7 +247,7 @@
     while (true) {
       try {
         ClusterStatus status = jobClient.getClusterStatus();
-        while (status.getJobTrackerState() != JobTracker.State.RUNNING) {
+        while (status.getJobTrackerStatus() != JobTrackerStatus.RUNNING) {
           waitFor(100);
           status = jobClient.getClusterStatus();
         }