From 71e05154330c084310b6e32bfd6397c29b4e0534 Mon Sep 17 00:00:00 2001 From: Arun Murthy Date: Fri, 9 Sep 2011 03:01:08 +0000 Subject: [PATCH] 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 --- hadoop-mapreduce-project/CHANGES.txt | 2 ++ .../hadoop/mapred/ClientServiceDelegate.java | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) 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 @@ class ClientServiceDelegate { //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 @@ class ClientServiceDelegate { 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 @@ class ClientServiceDelegate { 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,