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
This commit is contained in:
Mahadev Konar 2012-01-16 19:40:00 +00:00
parent 72a5977cf7
commit 21fa0778c5
2 changed files with 21 additions and 14 deletions

View File

@ -439,6 +439,9 @@ Release 0.23.1 - Unreleased
MAPREDUCE-3664. Federation Documentation has incorrect configuration example. MAPREDUCE-3664. Federation Documentation has incorrect configuration example.
(Brandon Li via jitendra) (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 Release 0.23.0 - 2011-11-01
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -19,12 +19,11 @@
package org.apache.hadoop.mapreduce.v2.app; package org.apache.hadoop.mapreduce.v2.app;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.net.HttpURLConnection;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.Proxy; import java.net.Proxy;
import java.net.URL;
import org.apache.hadoop.conf.Configurable; import org.apache.hadoop.conf.Configurable;
import org.apache.hadoop.conf.Configuration; 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 * User can specify number of retry attempts and a time interval at which to
* attempt retries</li><li> * attempt retries</li><li>
* Cluster administrators can set final parameters to set maximum number of * Cluster administrators can set final parameters to set maximum number of
* tries (0 would disable job end notification) and max time interval</li><li> * tries (0 would disable job end notification) and max time interval and a
* proxy if needed</li><li>
* The URL may contain sentinels which will be replaced by jobId and jobStatus * The URL may contain sentinels which will be replaced by jobId and jobStatus
* (eg. SUCCEEDED/KILLED/FAILED) </li> </ul> * (eg. SUCCEEDED/KILLED/FAILED) </li> </ul>
* </p> * </p>
@ -59,8 +59,8 @@ public class JobEndNotifier implements Configurable {
/** /**
* Parse the URL that needs to be notified of the end of the job, along * 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 * with the number of retries in case of failure, the amount of time to
* wait between retries * wait between retries and proxy settings
* @param conf the configuration * @param conf the configuration
*/ */
public void setConf(Configuration conf) { public void setConf(Configuration conf) {
@ -119,15 +119,19 @@ public class JobEndNotifier implements Configurable {
boolean success = false; boolean success = false;
try { try {
Log.info("Job end notification trying " + urlToNotify); Log.info("Job end notification trying " + urlToNotify);
URLConnection conn = urlToNotify.openConnection(proxyToUse); HttpURLConnection conn = (HttpURLConnection) urlToNotify.openConnection();
conn.setConnectTimeout(5*1000); conn.setConnectTimeout(5*1000);
conn.setReadTimeout(5*1000); conn.setReadTimeout(5*1000);
conn.setAllowUserInteraction(false); conn.setAllowUserInteraction(false);
InputStream is = conn.getInputStream(); if(conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
conn.getContent(); Log.warn("Job end notification to " + urlToNotify +" failed with code: "
is.close(); + conn.getResponseCode() + " and message \"" + conn.getResponseMessage()
+"\"");
}
else {
success = true; success = true;
Log.info("Job end notification to " + urlToNotify + " succeeded"); Log.info("Job end notification to " + urlToNotify + " succeeded");
}
} catch(IOException ioe) { } catch(IOException ioe) {
Log.warn("Job end notification to " + urlToNotify + " failed", 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 * Notify a server of the completion of a submitted job. The user must have
* configured MRConfig.JOB_END_NOTIFICATION_URLS * configured MRJobConfig.MR_JOB_END_NOTIFICATION_URL
* @param jobReport JobReport used to read JobId and JobStatus * @param jobReport JobReport used to read JobId and JobStatus
* @throws InterruptedException * @throws InterruptedException
*/ */