From 21fa0778c58b5317f2be3c851353c3bcbfbb0fdf Mon Sep 17 00:00:00 2001 From: Mahadev Konar Date: Mon, 16 Jan 2012 19:40:00 +0000 Subject: [PATCH] MAPREDUCE-3649. Job End notification gives an error on calling back. (Ravi Prakash via mahadev) - Merging r1232126 from trunk. git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.23@1232128 13f79535-47bb-0310-9956-ffa450edef68 --- hadoop-mapreduce-project/CHANGES.txt | 3 ++ .../mapreduce/v2/app/JobEndNotifier.java | 32 +++++++++++-------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/hadoop-mapreduce-project/CHANGES.txt b/hadoop-mapreduce-project/CHANGES.txt index 16b0b942ce4..2600b28c7be 100644 --- a/hadoop-mapreduce-project/CHANGES.txt +++ b/hadoop-mapreduce-project/CHANGES.txt @@ -439,6 +439,9 @@ Release 0.23.1 - Unreleased MAPREDUCE-3664. Federation Documentation has incorrect configuration example. (Brandon Li via jitendra) + MAPREDUCE-3649. Job End notification gives an error on calling back. + (Ravi Prakash via mahadev) + Release 0.23.0 - 2011-11-01 INCOMPATIBLE CHANGES diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/JobEndNotifier.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/JobEndNotifier.java index ae92cc0a3ea..9ffe2181c99 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/JobEndNotifier.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/JobEndNotifier.java @@ -19,12 +19,11 @@ package org.apache.hadoop.mapreduce.v2.app; import java.io.IOException; -import java.io.InputStream; +import java.net.HttpURLConnection; import java.net.InetSocketAddress; import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLConnection; import java.net.Proxy; +import java.net.URL; import org.apache.hadoop.conf.Configurable; import org.apache.hadoop.conf.Configuration; @@ -40,7 +39,8 @@ import org.mortbay.log.Log; * User can specify number of retry attempts and a time interval at which to * attempt retries
  • * Cluster administrators can set final parameters to set maximum number of - * tries (0 would disable job end notification) and max time interval
  • + * tries (0 would disable job end notification) and max time interval and a + * proxy if needed
  • * The URL may contain sentinels which will be replaced by jobId and jobStatus * (eg. SUCCEEDED/KILLED/FAILED)
  • *

    @@ -59,8 +59,8 @@ public class JobEndNotifier implements Configurable { /** * Parse the URL that needs to be notified of the end of the job, along - * with the number of retries in case of failure and the amount of time to - * wait between retries + * with the number of retries in case of failure, the amount of time to + * wait between retries and proxy settings * @param conf the configuration */ public void setConf(Configuration conf) { @@ -119,15 +119,19 @@ public class JobEndNotifier implements Configurable { boolean success = false; try { Log.info("Job end notification trying " + urlToNotify); - URLConnection conn = urlToNotify.openConnection(proxyToUse); + HttpURLConnection conn = (HttpURLConnection) urlToNotify.openConnection(); conn.setConnectTimeout(5*1000); conn.setReadTimeout(5*1000); conn.setAllowUserInteraction(false); - InputStream is = conn.getInputStream(); - conn.getContent(); - is.close(); - success = true; - Log.info("Job end notification to " + urlToNotify + " succeeded"); + if(conn.getResponseCode() != HttpURLConnection.HTTP_OK) { + Log.warn("Job end notification to " + urlToNotify +" failed with code: " + + conn.getResponseCode() + " and message \"" + conn.getResponseMessage() + +"\""); + } + else { + success = true; + Log.info("Job end notification to " + urlToNotify + " succeeded"); + } } catch(IOException ioe) { Log.warn("Job end notification to " + urlToNotify + " failed", ioe); } @@ -135,8 +139,8 @@ public class JobEndNotifier implements Configurable { } /** - * Notify a server of the completion of a submitted job. The server must have - * configured MRConfig.JOB_END_NOTIFICATION_URLS + * Notify a server of the completion of a submitted job. The user must have + * configured MRJobConfig.MR_JOB_END_NOTIFICATION_URL * @param jobReport JobReport used to read JobId and JobStatus * @throws InterruptedException */