diff --git a/hadoop-mapreduce-project/CHANGES.txt b/hadoop-mapreduce-project/CHANGES.txt index 30f23b81134..f9008dd4752 100644 --- a/hadoop-mapreduce-project/CHANGES.txt +++ b/hadoop-mapreduce-project/CHANGES.txt @@ -1251,6 +1251,8 @@ Release 0.23.0 - Unreleased incorrectly assume application was gone by making submission synchronous for RMAppManager. (Thomas Graves via acmurthy) + MAPREDUCE-2963. Fix hang in TestMRJobs. (Siddharth Seth via acmurthy) + Release 0.22.0 - Unreleased INCOMPATIBLE CHANGES diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/ClientServiceDelegate.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/ClientServiceDelegate.java index 3cc12e87a94..f0ee71504d4 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/ClientServiceDelegate.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/ClientServiceDelegate.java @@ -19,6 +19,7 @@ package org.apache.hadoop.mapred; import java.io.IOException; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.security.PrivilegedAction; import java.util.HashMap; @@ -197,7 +198,7 @@ private MRClientProtocol getProxy() throws YarnRemoteException { //succeeded. if (application.getState() == ApplicationState.SUCCEEDED) { LOG.info("Application state is completed. " + - "Redirecting to job history server " + serviceAddr); + "Redirecting to job history server"); realProxy = historyServerProxy; } return realProxy; @@ -238,8 +239,14 @@ private synchronized Object invoke(String method, Class argClass, LOG.warn("Exception thrown by remote end."); LOG.warn(RPCUtil.toString(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) { - 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); forceRefresh = true; } @@ -306,9 +313,13 @@ JobStatus getJobStatus(JobID oldJobID) throws YarnRemoteException { 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 { + org.apache.hadoop.mapreduce.v2.api.records.JobId jobId = + TypeConverter.toYarn(oldJobID); GetTaskReportsRequest request = recordFactory.newRecordInstance(GetTaskReportsRequest.class); + request.setJobId(jobId); + request.setTaskType(TypeConverter.toYarn(taskType)); List taskReports = ((GetTaskReportsResponse) invoke("getTaskReports", GetTaskReportsRequest.class,