001/**
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements.  See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership.  The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License.  You may obtain a copy of the License at
009 *
010 *     http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018package org.apache.hadoop.mapred;
019
020import java.util.ArrayList;
021import java.util.Collection;
022import java.util.List;
023
024import org.apache.hadoop.classification.InterfaceAudience;
025import org.apache.hadoop.classification.InterfaceStability;
026
027/** 
028 * A report on the state of a task. 
029 */
030@InterfaceAudience.Public
031@InterfaceStability.Stable
032public class TaskReport extends org.apache.hadoop.mapreduce.TaskReport {
033  
034  public TaskReport() {
035    super();
036  }
037  
038  /**
039   * Creates a new TaskReport object
040   * @param taskid
041   * @param progress
042   * @param state
043   * @param diagnostics
044   * @param startTime
045   * @param finishTime
046   * @param counters
047   * @deprecated
048   */
049  @Deprecated
050  TaskReport(TaskID taskid, float progress, String state,
051      String[] diagnostics, long startTime, long finishTime,
052      Counters counters) {
053    this(taskid, progress, state, diagnostics, null, startTime, finishTime, 
054        counters);
055  }
056  
057  /**
058   * Creates a new TaskReport object
059   * @param taskid
060   * @param progress
061   * @param state
062   * @param diagnostics
063   * @param currentStatus
064   * @param startTime
065   * @param finishTime
066   * @param counters
067   */
068  TaskReport(TaskID taskid, float progress, String state,
069             String[] diagnostics, TIPStatus currentStatus, 
070             long startTime, long finishTime,
071             Counters counters) {
072    super(taskid, progress, state, diagnostics, currentStatus, startTime,
073      finishTime, new org.apache.hadoop.mapreduce.Counters(counters));
074  }
075  
076  static TaskReport downgrade(
077      org.apache.hadoop.mapreduce.TaskReport report) {
078    return new TaskReport(TaskID.downgrade(report.getTaskID()),
079      report.getProgress(), report.getState(), report.getDiagnostics(),
080      report.getCurrentStatus(), report.getStartTime(), report.getFinishTime(),
081      Counters.downgrade(report.getTaskCounters()));
082  }
083  
084  static TaskReport[] downgradeArray(org.apache.hadoop.
085      mapreduce.TaskReport[] reports) {
086    List<TaskReport> ret = new ArrayList<TaskReport>();
087    for (org.apache.hadoop.mapreduce.TaskReport report : reports) {
088      ret.add(downgrade(report));
089    }
090    return ret.toArray(new TaskReport[0]);
091  }
092  
093  /** The string of the task id. */
094  public String getTaskId() {
095    return TaskID.downgrade(super.getTaskID()).toString();
096  }
097
098  /** The id of the task. */
099  public TaskID getTaskID() {
100    return TaskID.downgrade(super.getTaskID());
101  }
102
103  public Counters getCounters() { 
104    return Counters.downgrade(super.getTaskCounters()); 
105  }
106  
107  /** 
108   * set successful attempt ID of the task. 
109   */ 
110  public void setSuccessfulAttempt(TaskAttemptID t) {
111    super.setSuccessfulAttemptId(t);
112  }
113  /**
114   * Get the attempt ID that took this task to completion
115   */
116  public TaskAttemptID getSuccessfulTaskAttempt() {
117    return TaskAttemptID.downgrade(super.getSuccessfulTaskAttemptId());
118  }
119  /** 
120   * set running attempt(s) of the task. 
121   */ 
122  public void setRunningTaskAttempts(
123      Collection<TaskAttemptID> runningAttempts) {
124    Collection<org.apache.hadoop.mapreduce.TaskAttemptID> attempts = 
125      new ArrayList<org.apache.hadoop.mapreduce.TaskAttemptID>();
126    for (TaskAttemptID id : runningAttempts) {
127      attempts.add(id);
128    }
129    super.setRunningTaskAttemptIds(attempts);
130  }
131  /**
132   * Get the running task attempt IDs for this task
133   */
134  public Collection<TaskAttemptID> getRunningTaskAttempts() {
135    Collection<TaskAttemptID> attempts = new ArrayList<TaskAttemptID>();
136    for (org.apache.hadoop.mapreduce.TaskAttemptID id : 
137         super.getRunningTaskAttemptIds()) {
138      attempts.add(TaskAttemptID.downgrade(id));
139    }
140    return attempts;
141  }
142  
143  /** 
144   * set finish time of task. 
145   * @param finishTime finish time of task. 
146   */
147  protected void setFinishTime(long finishTime) {
148    super.setFinishTime(finishTime);
149  }
150
151  /** 
152   * set start time of the task. 
153   */ 
154  protected void setStartTime(long startTime) {
155    super.setStartTime(startTime);
156  }
157
158}