Przeglądaj źródła

Merge -r 1166974:1166975 from trunk to branch-0.23 to fix MAPREDUCE-2963.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.23@1166976 13f79535-47bb-0310-9956-ffa450edef68
Arun Murthy 13 lat temu
rodzic
commit
42dbcbb4d8

+ 2 - 0
hadoop-mapreduce-project/CHANGES.txt

@@ -1238,6 +1238,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

+ 14 - 3
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<org.apache.hadoop.mapreduce.v2.api.records.TaskReport> taskReports = 
       ((GetTaskReportsResponse) invoke("getTaskReports", GetTaskReportsRequest.class,