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 */
018 package org.apache.hadoop.mapred;
019
020 import java.util.ArrayList;
021 import java.util.Collection;
022 import java.util.List;
023
024 import org.apache.hadoop.classification.InterfaceAudience;
025 import org.apache.hadoop.classification.InterfaceStability;
026
027 /**
028 * A report on the state of a task.
029 */
030 @InterfaceAudience.Public
031 @InterfaceStability.Stable
032 public 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 id of the task. */
094 public TaskID getTaskID() { return TaskID.downgrade(super.getTaskId()); }
095
096 public Counters getCounters() {
097 return Counters.downgrade(super.getTaskCounters());
098 }
099
100 /**
101 * set successful attempt ID of the task.
102 */
103 public void setSuccessfulAttempt(TaskAttemptID t) {
104 super.setSuccessfulAttemptId(t);
105 }
106 /**
107 * Get the attempt ID that took this task to completion
108 */
109 public TaskAttemptID getSuccessfulTaskAttempt() {
110 return TaskAttemptID.downgrade(super.getSuccessfulTaskAttemptId());
111 }
112 /**
113 * set running attempt(s) of the task.
114 */
115 public void setRunningTaskAttempts(
116 Collection<TaskAttemptID> runningAttempts) {
117 Collection<org.apache.hadoop.mapreduce.TaskAttemptID> attempts =
118 new ArrayList<org.apache.hadoop.mapreduce.TaskAttemptID>();
119 for (TaskAttemptID id : runningAttempts) {
120 attempts.add(id);
121 }
122 super.setRunningTaskAttemptIds(attempts);
123 }
124 /**
125 * Get the running task attempt IDs for this task
126 */
127 public Collection<TaskAttemptID> getRunningTaskAttempts() {
128 Collection<TaskAttemptID> attempts = new ArrayList<TaskAttemptID>();
129 for (org.apache.hadoop.mapreduce.TaskAttemptID id :
130 super.getRunningTaskAttemptIds()) {
131 attempts.add(TaskAttemptID.downgrade(id));
132 }
133 return attempts;
134 }
135
136 /**
137 * set finish time of task.
138 * @param finishTime finish time of task.
139 */
140 protected void setFinishTime(long finishTime) {
141 super.setFinishTime(finishTime);
142 }
143
144 /**
145 * set start time of the task.
146 */
147 protected void setStartTime(long startTime) {
148 super.setStartTime(startTime);
149 }
150
151 }