MAPREDUCE-2963. Fix hang in TestMRJobs. Contributed by Siddharth Seth.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1166975 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Arun Murthy 2011-09-09 03:01:08 +00:00
parent a0f13a28f7
commit 71e0515433
2 changed files with 16 additions and 3 deletions

View File

@ -1251,6 +1251,8 @@ Release 0.23.0 - Unreleased
incorrectly assume application was gone by making submission synchronous incorrectly assume application was gone by making submission synchronous
for RMAppManager. (Thomas Graves via acmurthy) for RMAppManager. (Thomas Graves via acmurthy)
MAPREDUCE-2963. Fix hang in TestMRJobs. (Siddharth Seth via acmurthy)
Release 0.22.0 - Unreleased Release 0.22.0 - Unreleased
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -19,6 +19,7 @@
package org.apache.hadoop.mapred; package org.apache.hadoop.mapred;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.security.PrivilegedAction; import java.security.PrivilegedAction;
import java.util.HashMap; import java.util.HashMap;
@ -197,7 +198,7 @@ class ClientServiceDelegate {
//succeeded. //succeeded.
if (application.getState() == ApplicationState.SUCCEEDED) { if (application.getState() == ApplicationState.SUCCEEDED) {
LOG.info("Application state is completed. " + LOG.info("Application state is completed. " +
"Redirecting to job history server " + serviceAddr); "Redirecting to job history server");
realProxy = historyServerProxy; realProxy = historyServerProxy;
} }
return realProxy; return realProxy;
@ -238,8 +239,14 @@ class ClientServiceDelegate {
LOG.warn("Exception thrown by remote end."); LOG.warn("Exception thrown by remote end.");
LOG.warn(RPCUtil.toString(yre)); LOG.warn(RPCUtil.toString(yre));
throw yre; throw yre;
} catch (InvocationTargetException e) {
//TODO Finite # of errors before giving up?
LOG.info("Failed to contact AM/History for job " + jobId
+ " Will retry..", e.getTargetException());
forceRefresh = true;
} catch (Exception e) { } catch (Exception e) {
LOG.info("Failed to contact AM for job " + jobId + " Will retry.."); LOG.info("Failed to contact AM/History for job " + jobId
+ " Will retry..", e);
LOG.debug("Failing to contact application master", e); LOG.debug("Failing to contact application master", e);
forceRefresh = true; forceRefresh = true;
} }
@ -306,9 +313,13 @@ class ClientServiceDelegate {
return TypeConverter.fromYarn(report, jobFile, ""); return TypeConverter.fromYarn(report, jobFile, "");
} }
org.apache.hadoop.mapreduce.TaskReport[] getTaskReports(JobID jobID, TaskType taskType) org.apache.hadoop.mapreduce.TaskReport[] getTaskReports(JobID oldJobID, TaskType taskType)
throws YarnRemoteException, YarnRemoteException { throws YarnRemoteException, YarnRemoteException {
org.apache.hadoop.mapreduce.v2.api.records.JobId jobId =
TypeConverter.toYarn(oldJobID);
GetTaskReportsRequest request = recordFactory.newRecordInstance(GetTaskReportsRequest.class); GetTaskReportsRequest request = recordFactory.newRecordInstance(GetTaskReportsRequest.class);
request.setJobId(jobId);
request.setTaskType(TypeConverter.toYarn(taskType));
List<org.apache.hadoop.mapreduce.v2.api.records.TaskReport> taskReports = List<org.apache.hadoop.mapreduce.v2.api.records.TaskReport> taskReports =
((GetTaskReportsResponse) invoke("getTaskReports", GetTaskReportsRequest.class, ((GetTaskReportsResponse) invoke("getTaskReports", GetTaskReportsRequest.class,