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 om...@apache.org on 2011/03/04 04:49:14 UTC

svn commit: r1077180 - in /hadoop/common/branches/branch-0.20-security-patches/src/test/system: aop/org/apache/hadoop/mapred/ java/org/apache/hadoop/mapred/ java/org/apache/hadoop/mapreduce/test/system/ java/org/apache/hadoop/test/system/process/

Author: omalley
Date: Fri Mar  4 03:49:13 2011
New Revision: 1077180

URL: http://svn.apache.org/viewvc?rev=1077180&view=rev
Log:
commit 716e2e410d5f93da571ce1de3c84d38757fbe152
Author: Sharad Agarwal <sh...@yahoo-inc.com>
Date:   Tue Feb 23 13:29:05 2010 +0530

     patch from

Modified:
    hadoop/common/branches/branch-0.20-security-patches/src/test/system/aop/org/apache/hadoop/mapred/JobTrackerAspect.aj
    hadoop/common/branches/branch-0.20-security-patches/src/test/system/aop/org/apache/hadoop/mapred/TaskTrackerAspect.aj
    hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapred/TTTaskInfoImpl.java
    hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapred/TaskInfoImpl.java
    hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapred/TestCluster.java
    hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapreduce/test/system/TTProtocol.java
    hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapreduce/test/system/TTTaskInfo.java
    hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapreduce/test/system/TaskInfo.java
    hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/test/system/process/HadoopDaemonRemoteCluster.java

Modified: hadoop/common/branches/branch-0.20-security-patches/src/test/system/aop/org/apache/hadoop/mapred/JobTrackerAspect.aj
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/test/system/aop/org/apache/hadoop/mapred/JobTrackerAspect.aj?rev=1077180&r1=1077179&r2=1077180&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/test/system/aop/org/apache/hadoop/mapred/JobTrackerAspect.aj (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/test/system/aop/org/apache/hadoop/mapred/JobTrackerAspect.aj Fri Mar  4 03:49:13 2011
@@ -3,6 +3,8 @@ package org.apache.hadoop.mapred;
 import java.io.IOException;
 import java.util.List;
 import java.util.ArrayList;
+import java.util.Set;
+
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.mapred.JobConf;
 import org.apache.hadoop.mapred.JobTracker.RetireJobInfo;
@@ -63,22 +65,7 @@ public privileged aspect JobTrackerAspec
       LOG.warn("No task present for : " + taskID);
       return null;
     }
-    TaskInfo info;
-    TaskStatus[] status = tip.getTaskStatuses();
-    synchronized (tip) {
-      if (status == null) {
-        if (tip.isMapTask()) {
-          status = new MapTaskStatus[]{};
-        }
-        else {
-          status = new ReduceTaskStatus[]{};
-        }
-      }
-      info = new TaskInfoImpl(tip.getTIPId(), tip.getProgress(), tip
-          .getActiveTasks().size(), tip.numKilledTasks(), 
-          tip.numTaskFailures(), status);
-    }
-    return info;
+    return getTaskInfo(tip);
   }
 
   public TTInfo JobTracker.getTTInfo(String trackerName) throws IOException {
@@ -116,57 +103,18 @@ public privileged aspect JobTrackerAspec
       return null;
     }
     List<TaskInfo> infoList = new ArrayList<TaskInfo>();
-    TaskStatus[] status;
     synchronized (jip) {
       for (TaskInProgress tip : jip.setup) {
-        status = tip.getTaskStatuses();
-        if (status == null) {
-          if (tip.isMapTask()) {
-            status = new MapTaskStatus[]{};
-          }
-          else {
-            status = new ReduceTaskStatus[]{};
-          }
-        }
-        TaskInfo info = new TaskInfoImpl(tip.getTIPId(), tip.getProgress(), tip
-            .getActiveTasks().size(), tip.numKilledTasks(), tip
-            .numTaskFailures(), status);
-        infoList.add(info);
+        infoList.add(getTaskInfo(tip));
       }
       for (TaskInProgress tip : jip.maps) {
-        status = tip.getTaskStatuses();
-        if (status == null) {
-          status = new MapTaskStatus[]{};
-        }
-        TaskInfo info = new TaskInfoImpl(tip.getTIPId(), tip.getProgress(), tip
-            .getActiveTasks().size(), tip.numKilledTasks(), tip
-            .numTaskFailures(), status);
-        infoList.add(info);
+        infoList.add(getTaskInfo(tip));
       }
       for (TaskInProgress tip : jip.reduces) {
-        status = tip.getTaskStatuses();
-        if (status == null) {
-          status = new ReduceTaskStatus[]{};
-        }
-        TaskInfo info = new TaskInfoImpl(tip.getTIPId(), tip.getProgress(), tip
-            .getActiveTasks().size(), tip.numKilledTasks(), tip
-            .numTaskFailures(), status);
-        infoList.add(info);
+        infoList.add(getTaskInfo(tip));
       }
       for (TaskInProgress tip : jip.cleanup) {
-        status = tip.getTaskStatuses();
-        if (status == null) {
-          if (tip.isMapTask()) {
-            status = new MapTaskStatus[]{};
-          }
-          else {
-            status = new ReduceTaskStatus[]{};
-          }
-        }
-        TaskInfo info = new TaskInfoImpl(tip.getTIPId(), tip.getProgress(), tip
-            .getActiveTasks().size(), tip.numKilledTasks(), tip
-            .numTaskFailures(), status);
-        infoList.add(info);
+        infoList.add(getTaskInfo(tip));
       }
     }
     return (TaskInfo[]) infoList.toArray(new TaskInfo[infoList.size()]);
@@ -231,4 +179,25 @@ public privileged aspect JobTrackerAspec
         jobtrackerIndentifier) {
     tracker.setReady(true);
   }
+  
+  private TaskInfo JobTracker.getTaskInfo(TaskInProgress tip) {
+    TaskStatus[] status = tip.getTaskStatuses();
+    if (status == null) {
+      if (tip.isMapTask()) {
+        status = new MapTaskStatus[]{};
+      }
+      else {
+        status = new ReduceTaskStatus[]{};
+      }
+    }
+    String[] trackers =
+        (String[]) (tip.getActiveTasks().values()).toArray(new String[tip
+            .getActiveTasks().values().size()]);
+    TaskInfo info =
+        new TaskInfoImpl(tip.getTIPId(), tip.getProgress(), tip
+            .getActiveTasks().size(), tip.numKilledTasks(), tip
+            .numTaskFailures(), status, (tip.isJobSetupTask() || tip
+            .isJobCleanupTask()), trackers);
+    return info;
+  }
 }

Modified: hadoop/common/branches/branch-0.20-security-patches/src/test/system/aop/org/apache/hadoop/mapred/TaskTrackerAspect.aj
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/test/system/aop/org/apache/hadoop/mapred/TaskTrackerAspect.aj?rev=1077180&r1=1077179&r2=1077180&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/test/system/aop/org/apache/hadoop/mapred/TaskTrackerAspect.aj (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/test/system/aop/org/apache/hadoop/mapred/TaskTrackerAspect.aj Fri Mar  4 03:49:13 2011
@@ -30,20 +30,43 @@ public privileged aspect TaskTrackerAspe
 
   public TTTaskInfo[] TaskTracker.getTasks() throws IOException {
     List<TTTaskInfo> infoList = new ArrayList<TTTaskInfo>();
-    for (TaskInProgress tip : tasks.values()) {
-      TTTaskInfo info = null;
-      if (tip.task.isMapTask()) {
-        info = new MapTTTaskInfo(((MapTask) tip.task), tip.slotTaken,
-            tip.wasKilled, tip.diagnosticInfo.toString());
-      } else {
-        info = new ReduceTTTaskInfo(((ReduceTask) tip.task), tip.slotTaken,
-            tip.wasKilled, tip.diagnosticInfo.toString());
+    synchronized (tasks) {
+      for (TaskInProgress tip : tasks.values()) {
+        TTTaskInfo info = getTTTaskInfo(tip);
+        infoList.add(info);
       }
-      infoList.add(info);
     }
     return (TTTaskInfo[]) infoList.toArray(new TTTaskInfo[infoList.size()]);
   }
 
+  public TTTaskInfo TaskTracker.getTask(org.apache.hadoop.mapreduce.TaskID id) 
+      throws IOException {
+    TaskID old = org.apache.hadoop.mapred.TaskID.downgrade(id);
+    synchronized (tasks) {
+      for(TaskAttemptID ta : tasks.keySet()) {
+        if(old.equals(ta.getTaskID())) {
+          return getTTTaskInfo(tasks.get(ta));
+        }
+      }
+    }
+    return null;
+  }
+
+  private TTTaskInfo TaskTracker.getTTTaskInfo(TaskInProgress tip) {
+    TTTaskInfo info;
+    if (tip.task.isMapTask()) {
+      info =
+          new MapTTTaskInfo(tip.slotTaken, tip.wasKilled, tip.diagnosticInfo
+              .toString(), (MapTaskStatus) tip.getStatus());
+    } else {
+      info =
+          new ReduceTTTaskInfo(
+              tip.slotTaken, tip.wasKilled, tip.diagnosticInfo.toString(),
+              (ReduceTaskStatus) tip.getStatus());
+    }
+    return info;
+  }
+
   before(TaskTrackerStatus newStatus, TaskTracker tracker) : 
     set(TaskTrackerStatus TaskTracker.status) 
     && args(newStatus) && this(tracker) {

Modified: hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapred/TTTaskInfoImpl.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapred/TTTaskInfoImpl.java?rev=1077180&r1=1077179&r2=1077180&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapred/TTTaskInfoImpl.java (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapred/TTTaskInfoImpl.java Fri Mar  4 03:49:13 2011
@@ -16,20 +16,20 @@ import org.apache.hadoop.mapreduce.test.
 abstract class TTTaskInfoImpl implements TTTaskInfo {
 
   private String diagonsticInfo;
-  private Task task;
   private boolean slotTaken;
   private boolean wasKilled;
+  TaskStatus status;
 
   public TTTaskInfoImpl() {
   }
 
-  public TTTaskInfoImpl(Task task, boolean slotTaken, boolean wasKilled,
-      String diagonsticInfo) {
+  public TTTaskInfoImpl(boolean slotTaken, boolean wasKilled,
+      String diagonsticInfo, TaskStatus status) {
     super();
     this.diagonsticInfo = diagonsticInfo;
-    this.task = task;
     this.slotTaken = slotTaken;
     this.wasKilled = wasKilled;
+    this.status = status;
   }
 
   @Override
@@ -38,11 +38,6 @@ abstract class TTTaskInfoImpl implements
   }
 
   @Override
-  public Task getTask() {
-    return task;
-  }
-
-  @Override
   public boolean slotTaken() {
     return slotTaken;
   }
@@ -53,44 +48,48 @@ abstract class TTTaskInfoImpl implements
   }
 
   @Override
+  public TaskStatus getTaskStatus() {
+    return status;
+  }
+
+  @Override
   public void readFields(DataInput in) throws IOException {
-    task.readFields(in);
     slotTaken = in.readBoolean();
     wasKilled = in.readBoolean();
     diagonsticInfo = in.readUTF();
+    status.readFields(in);
   }
 
   @Override
   public void write(DataOutput out) throws IOException {
-    task.write(out);
     out.writeBoolean(slotTaken);
     out.writeBoolean(wasKilled);
     out.writeUTF(diagonsticInfo);
+    status.write(out);
   }
 
   static class MapTTTaskInfo extends TTTaskInfoImpl {
 
     public MapTTTaskInfo() {
-      super(new MapTask(), false, false, "");
+      super(false, false, "", new MapTaskStatus());
     }
 
-    public MapTTTaskInfo(MapTask task, boolean slotTaken, boolean wasKilled,
-        String diagonsticInfo) {
-      super(task, slotTaken, wasKilled, diagonsticInfo);
+    public MapTTTaskInfo(boolean slotTaken, boolean wasKilled,
+        String diagonsticInfo, MapTaskStatus status) {
+      super(slotTaken, wasKilled, diagonsticInfo, status);
     }
   }
 
   static class ReduceTTTaskInfo extends TTTaskInfoImpl {
 
     public ReduceTTTaskInfo() {
-      super(new ReduceTask(), false, false, "");
+      super(false, false, "", new ReduceTaskStatus());
     }
 
-    public ReduceTTTaskInfo(ReduceTask task, boolean slotTaken,
-        boolean wasKilled, String diagonsticInfo) {
-      super(task, slotTaken, wasKilled, diagonsticInfo);
+    public ReduceTTTaskInfo(boolean slotTaken,
+        boolean wasKilled, String diagonsticInfo,ReduceTaskStatus status) {
+      super(slotTaken, wasKilled, diagonsticInfo, status);
     }
-
   }
 
 }

Modified: hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapred/TaskInfoImpl.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapred/TaskInfoImpl.java?rev=1077180&r1=1077179&r2=1077180&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapred/TaskInfoImpl.java (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapred/TaskInfoImpl.java Fri Mar  4 03:49:13 2011
@@ -21,12 +21,17 @@ class TaskInfoImpl implements TaskInfo {
   private int failedAttempts;
   private int runningAttempts;
   private TaskStatus[] taskStatus;
+  private boolean setupOrCleanup;
+  private String[] taskTrackers;
 
   public TaskInfoImpl() {
     taskID = new TaskID();
   }
-  public TaskInfoImpl(TaskID taskID, double progress, int runningAttempts,
-      int killedAttempts, int failedAttempts, TaskStatus[] taskStatus) {
+
+  public TaskInfoImpl(
+      TaskID taskID, double progress, int runningAttempts, int killedAttempts,
+      int failedAttempts, TaskStatus[] taskStatus,
+      boolean setupOrCleanup, String[] taskTrackers) {
     this.progress = progress;
     this.taskID = taskID;
     this.killedAttempts = killedAttempts;
@@ -34,16 +39,15 @@ class TaskInfoImpl implements TaskInfo {
     this.runningAttempts = runningAttempts;
     if (taskStatus != null) {
       this.taskStatus = taskStatus;
-    }
-    else { 
+    } else {
       if (taskID.isMap()) {
-        this.taskStatus = new MapTaskStatus[]{};
-      }
-      else {
-        this.taskStatus = new ReduceTaskStatus[]{};
+        this.taskStatus = new MapTaskStatus[] {};
+      } else {
+        this.taskStatus = new ReduceTaskStatus[] {};
       }
     }
-    
+    this.setupOrCleanup = setupOrCleanup;
+    this.taskTrackers = taskTrackers;
   }
 
   @Override
@@ -93,6 +97,13 @@ class TaskInfoImpl implements TaskInfo {
         taskStatus[i] = new ReduceTaskStatus();
       }
       taskStatus[i].readFields(in);
+      taskStatus[i].setTaskTracker(in.readUTF());
+    }
+    setupOrCleanup = in.readBoolean();
+    size = in.readInt();
+    taskTrackers = new String[size];
+    for(int i=0; i < size ; i++) {
+      taskTrackers[i] = in.readUTF();
     }
   }
 
@@ -106,11 +117,27 @@ class TaskInfoImpl implements TaskInfo {
     out.writeInt(taskStatus.length);
     for (TaskStatus t : taskStatus) {
       t.write(out);
+      out.writeUTF(t.getTaskTracker());
+    }
+    out.writeBoolean(setupOrCleanup);
+    out.writeInt(taskTrackers.length);
+    for(String tt : taskTrackers) {
+      out.writeUTF(tt);
     }
   }
-  
+
   @Override
   public TaskStatus[] getTaskStatus() {
     return taskStatus;
   }
+
+  @Override
+  public boolean isSetupOrCleanup() {
+    return setupOrCleanup;
+  }
+
+  @Override
+  public String[] getTaskTrackers() {
+    return taskTrackers;
+  }
 }

Modified: hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapred/TestCluster.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapred/TestCluster.java?rev=1077180&r1=1077179&r2=1077180&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapred/TestCluster.java (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapred/TestCluster.java Fri Mar  4 03:49:13 2011
@@ -9,11 +9,17 @@ import org.apache.commons.logging.LogFac
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.examples.SleepJob;
 import org.apache.hadoop.fs.FileStatus;
+import org.apache.hadoop.mapreduce.JobID;
+import org.apache.hadoop.mapreduce.test.system.FinishTaskControlAction;
 import org.apache.hadoop.mapreduce.test.system.JTClient;
 import org.apache.hadoop.mapreduce.test.system.JTProtocol;
 import org.apache.hadoop.mapreduce.test.system.JobInfo;
 import org.apache.hadoop.mapreduce.test.system.MRCluster;
 import org.apache.hadoop.mapreduce.test.system.TTClient;
+import org.apache.hadoop.mapreduce.test.system.TTInfo;
+import org.apache.hadoop.mapreduce.test.system.TTTaskInfo;
+import org.apache.hadoop.mapreduce.test.system.TaskInfo;
+import org.apache.hadoop.net.NetUtils;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -98,4 +104,56 @@ public class TestCluster {
         +"  " + fz.getClass());
   }
 
+  /**
+   * Test to showcase how to get a task status from a TaskTracker.
+   * Does the following;
+   * 1. Contacts the job tracker to get TaskInfo
+   * 2. Uses taskinfo to get list of tts
+   * 3. Contacts TT and gets task info.
+   * 
+   * Care should be taken that the task which you are searching
+   * can need not be around.
+   * @throws Exception
+   */
+  @Test
+  public void testTaskStatus() throws Exception {
+    Configuration conf = new Configuration(cluster.getConf());
+    JTProtocol wovenClient = cluster.getMaster().getProxy();
+    FinishTaskControlAction.configureControlActionForJob(conf);
+    SleepJob job = new SleepJob();
+    job.setConf(conf);
+
+    conf = job.setupJobConf(1, 0, 100, 100, 100, 100);
+    JobClient client = cluster.getMaster().getClient();
+
+    RunningJob rJob = client.submitJob(new JobConf(conf));
+    JobID id = rJob.getID();
+
+    JobInfo jInfo = wovenClient.getJobInfo(id);
+
+    while (jInfo.getStatus().getRunState() != JobStatus.RUNNING) {
+      Thread.sleep(1000);
+      jInfo = wovenClient.getJobInfo(id);
+    }
+
+    LOG.info("Waiting till job starts running one map");
+
+    TaskInfo[] myTaskInfos = wovenClient.getTaskInfo(id);
+    for(TaskInfo info : myTaskInfos) {
+      if(!info.isSetupOrCleanup()) {
+        String[] taskTrackers = info.getTaskTrackers();
+        for(String taskTracker : taskTrackers) {
+          TTInfo ttInfo = wovenClient.getTTInfo(taskTracker);
+          TTClient ttCli =  cluster.getSlaves().get(
+              ttInfo.getStatus().getHost());
+          TTTaskInfo ttTaskInfo = ttCli.getProxy().getTask(info.getTaskID());
+          Assert.assertNotNull(ttTaskInfo);
+          FinishTaskControlAction action = new FinishTaskControlAction(
+              TaskID.downgrade(info.getTaskID()));
+          ttCli.getProxy().sendAction(action);
+        }
+      }
+    }
+    rJob.killJob();
+  }
 }

Modified: hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapreduce/test/system/TTProtocol.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapreduce/test/system/TTProtocol.java?rev=1077180&r1=1077179&r2=1077180&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapreduce/test/system/TTProtocol.java (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapreduce/test/system/TTProtocol.java Fri Mar  4 03:49:13 2011
@@ -5,6 +5,7 @@ import java.io.IOException;
 import org.apache.hadoop.mapred.JobTracker;
 import org.apache.hadoop.mapred.TaskTracker;
 import org.apache.hadoop.mapred.TaskTrackerStatus;
+import org.apache.hadoop.mapreduce.TaskID;
 import org.apache.hadoop.test.system.DaemonProtocol;
 
 /**
@@ -29,4 +30,14 @@ public interface TTProtocol extends Daem
    * @throws IOException
    */
   TTTaskInfo[] getTasks() throws IOException;
+
+  /**
+   * Gets the task associated with the id.<br/>
+   * 
+   * @param id of the task.
+   * 
+   * @return
+   * @throws IOException
+   */
+  TTTaskInfo getTask(TaskID taskID) throws IOException;
 }

Modified: hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapreduce/test/system/TTTaskInfo.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapreduce/test/system/TTTaskInfo.java?rev=1077180&r1=1077179&r2=1077180&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapreduce/test/system/TTTaskInfo.java (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapreduce/test/system/TTTaskInfo.java Fri Mar  4 03:49:13 2011
@@ -1,20 +1,13 @@
 package org.apache.hadoop.mapreduce.test.system;
 
 import org.apache.hadoop.io.Writable;
-import org.apache.hadoop.mapred.Task;
+import org.apache.hadoop.mapred.TaskStatus;
 import org.apache.hadoop.mapred.TaskTracker;
 
 /**
  * Task state information as seen by the TT.
  */
 public interface TTTaskInfo extends Writable {
-  /**
-   * Gets the task associated to the instance as seen by {@link TaskTracker}
-   * <br/>
-   * 
-   * @return task.
-   */
-  Task getTask();
 
   /**
    * Gets the diagnostic information associated the the task.<br/>
@@ -37,4 +30,12 @@ public interface TTTaskInfo extends Writ
    * @return true, if task has been killed.
    */
   boolean wasKilled();
+
+  /**
+   * Gets the task status associated with the particular task trackers task 
+   * view.<br/>
+   * 
+   * @return status of the particular task
+   */
+  TaskStatus getTaskStatus();
 }
\ No newline at end of file

Modified: hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapreduce/test/system/TaskInfo.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapreduce/test/system/TaskInfo.java?rev=1077180&r1=1077179&r2=1077180&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapreduce/test/system/TaskInfo.java (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/mapreduce/test/system/TaskInfo.java Fri Mar  4 03:49:13 2011
@@ -49,9 +49,25 @@ public interface TaskInfo extends Writab
 
   /**
    * Array of TaskStatus objects that are related to the corresponding
-   * TaskInProgress object.
+   * TaskInProgress object.The task status of the tip is only populated
+   * once a tracker reports back the task status.<br/>
    * 
-   * @return
+   * @return list of task statuses.
    */
   TaskStatus[] getTaskStatus();
+
+  /**
+   * Gets a list of tracker on which the task attempts are scheduled/running.
+   * Can be empty if the task attempt has succeeded <br/>
+   * 
+   * @return list of trackers
+   */
+  String[] getTaskTrackers();
+
+  /**
+   * Gets if the current TaskInProgress is a setup or cleanup tip. <br/>
+   * 
+   * @return true if setup/cleanup
+   */
+  boolean isSetupOrCleanup();
 }

Modified: hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/test/system/process/HadoopDaemonRemoteCluster.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/test/system/process/HadoopDaemonRemoteCluster.java?rev=1077180&r1=1077179&r2=1077180&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/test/system/process/HadoopDaemonRemoteCluster.java (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/test/system/process/HadoopDaemonRemoteCluster.java Fri Mar  4 03:49:13 2011
@@ -4,6 +4,7 @@ import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
+import java.net.InetAddress;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
@@ -236,8 +237,10 @@ public class HadoopDaemonRemoteCluster i
       reader = new BufferedReader(new FileReader(slavesFile));
       String slaveHost = null;
       while ((slaveHost = reader.readLine()) != null) {
-        RemoteProcess slave = new ScriptDaemon(slaveCommand, slaveHost);
-        slaves.put(slaveHost, slave);
+        InetAddress addr = InetAddress.getByName(slaveHost);
+        RemoteProcess slave = new ScriptDaemon(slaveCommand, 
+            addr.getCanonicalHostName());
+        slaves.put(addr.getCanonicalHostName(), slave);
       }
       if (slaves.size() == 0) {
         LOG.error(confLocation + System.getProperty("file.separator", "/") +