From d303f012975a1bcd7b1fa766ae870aba22e8b788 Mon Sep 17 00:00:00 2001 From: Alejandro Abdelnur Date: Thu, 9 May 2013 20:04:32 +0000 Subject: [PATCH] MAPREDUCE-4942. mapreduce.Job has a bunch of methods that throw InterruptedException so its incompatible with MR1. (rkanter via tucu) git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1480748 13f79535-47bb-0310-9956-ffa450edef68 --- hadoop-mapreduce-project/CHANGES.txt | 3 + .../org/apache/hadoop/mapred/JobClient.java | 62 +++--------- .../java/org/apache/hadoop/mapreduce/Job.java | 97 ++++++++++++------- .../mapred/gridmix/TestGridmixSummary.java | 2 +- 4 files changed, 80 insertions(+), 84 deletions(-) diff --git a/hadoop-mapreduce-project/CHANGES.txt b/hadoop-mapreduce-project/CHANGES.txt index 1f93892fe6b..959e76e8b86 100644 --- a/hadoop-mapreduce-project/CHANGES.txt +++ b/hadoop-mapreduce-project/CHANGES.txt @@ -395,6 +395,9 @@ Release 2.0.5-beta - UNRELEASED MAPREDUCE-5226. Handling YarnRemoteException separately from IOException in MR App's use of AMRMProtocol after YARN-630. (Xuan Gong via vinodkv) + MAPREDUCE-4942. mapreduce.Job has a bunch of methods that throw + InterruptedException so its incompatible with MR1. (rkanter via tucu) + Release 2.0.4-alpha - 2013-04-25 INCOMPATIBLE CHANGES diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapred/JobClient.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapred/JobClient.java index 902907447be..a4ba42f6b15 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapred/JobClient.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapred/JobClient.java @@ -209,11 +209,7 @@ public class JobClient extends CLI { * completed. */ public float mapProgress() throws IOException { - try { - return job.mapProgress(); - } catch (InterruptedException ie) { - throw new IOException(ie); - } + return job.mapProgress(); } /** @@ -221,11 +217,7 @@ public class JobClient extends CLI { * completed. */ public float reduceProgress() throws IOException { - try { - return job.reduceProgress(); - } catch (InterruptedException ie) { - throw new IOException(ie); - } + return job.reduceProgress(); } /** @@ -245,33 +237,21 @@ public class JobClient extends CLI { * completed. */ public float setupProgress() throws IOException { - try { - return job.setupProgress(); - } catch (InterruptedException ie) { - throw new IOException(ie); - } + return job.setupProgress(); } /** * Returns immediately whether the whole job is done yet or not. */ public synchronized boolean isComplete() throws IOException { - try { - return job.isComplete(); - } catch (InterruptedException ie) { - throw new IOException(ie); - } + return job.isComplete(); } /** * True iff job completed successfully. */ public synchronized boolean isSuccessful() throws IOException { - try { - return job.isSuccessful(); - } catch (InterruptedException ie) { - throw new IOException(ie); - } + return job.isSuccessful(); } /** @@ -302,11 +282,7 @@ public class JobClient extends CLI { * Tells the service to terminate the current job. */ public synchronized void killJob() throws IOException { - try { - job.killJob(); - } catch (InterruptedException ie) { - throw new IOException(ie); - } + job.killJob(); } @@ -331,14 +307,10 @@ public class JobClient extends CLI { */ public synchronized void killTask(TaskAttemptID taskId, boolean shouldFail) throws IOException { - try { - if (shouldFail) { - job.failTask(taskId); - } else { - job.killTask(taskId); - } - } catch (InterruptedException ie) { - throw new IOException(ie); + if (shouldFail) { + job.failTask(taskId); + } else { + job.killTask(taskId); } } @@ -378,16 +350,12 @@ public class JobClient extends CLI { * Returns the counters for this job */ public Counters getCounters() throws IOException { - try { - Counters result = null; - org.apache.hadoop.mapreduce.Counters temp = job.getCounters(); - if(temp != null) { - result = Counters.downgrade(temp); - } - return result; - } catch (InterruptedException ie) { - throw new IOException(ie); + Counters result = null; + org.apache.hadoop.mapreduce.Counters temp = job.getCounters(); + if(temp != null) { + result = Counters.downgrade(temp); } + return result; } @Override diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/Job.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/Job.java index 90cf660fd27..09eb8d5028e 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/Job.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/Job.java @@ -296,7 +296,7 @@ public class Job extends JobContextImpl implements JobContext { * it, if necessary */ synchronized void ensureFreshStatus() - throws IOException, InterruptedException { + throws IOException { if (System.currentTimeMillis() - statustime > MAX_JOBSTATUS_AGE) { updateStatus(); } @@ -306,13 +306,18 @@ public class Job extends JobContextImpl implements JobContext { * immediately * @throws IOException */ - synchronized void updateStatus() throws IOException, InterruptedException { - this.status = ugi.doAs(new PrivilegedExceptionAction() { - @Override - public JobStatus run() throws IOException, InterruptedException { - return cluster.getClient().getJobStatus(status.getJobID()); - } - }); + synchronized void updateStatus() throws IOException { + try { + this.status = ugi.doAs(new PrivilegedExceptionAction() { + @Override + public JobStatus run() throws IOException, InterruptedException { + return cluster.getClient().getJobStatus(status.getJobID()); + } + }); + } + catch (InterruptedException ie) { + throw new IOException(ie); + } if (this.status == null) { throw new IOException("Job status not available "); } @@ -537,7 +542,7 @@ public class Job extends JobContextImpl implements JobContext { * @return the progress of the job's map-tasks. * @throws IOException */ - public float mapProgress() throws IOException, InterruptedException { + public float mapProgress() throws IOException { ensureState(JobState.RUNNING); ensureFreshStatus(); return status.getMapProgress(); @@ -550,7 +555,7 @@ public class Job extends JobContextImpl implements JobContext { * @return the progress of the job's reduce-tasks. * @throws IOException */ - public float reduceProgress() throws IOException, InterruptedException { + public float reduceProgress() throws IOException { ensureState(JobState.RUNNING); ensureFreshStatus(); return status.getReduceProgress(); @@ -576,7 +581,7 @@ public class Job extends JobContextImpl implements JobContext { * @return the progress of the job's setup-tasks. * @throws IOException */ - public float setupProgress() throws IOException, InterruptedException { + public float setupProgress() throws IOException { ensureState(JobState.RUNNING); ensureFreshStatus(); return status.getSetupProgress(); @@ -589,7 +594,7 @@ public class Job extends JobContextImpl implements JobContext { * @return true if the job is complete, else false. * @throws IOException */ - public boolean isComplete() throws IOException, InterruptedException { + public boolean isComplete() throws IOException { ensureState(JobState.RUNNING); updateStatus(); return status.isJobComplete(); @@ -601,7 +606,7 @@ public class Job extends JobContextImpl implements JobContext { * @return true if the job succeeded, else false. * @throws IOException */ - public boolean isSuccessful() throws IOException, InterruptedException { + public boolean isSuccessful() throws IOException { ensureState(JobState.RUNNING); updateStatus(); return status.getState() == JobStatus.State.SUCCEEDED; @@ -613,9 +618,14 @@ public class Job extends JobContextImpl implements JobContext { * * @throws IOException */ - public void killJob() throws IOException, InterruptedException { + public void killJob() throws IOException { ensureState(JobState.RUNNING); - cluster.getClient().killJob(getJobID()); + try { + cluster.getClient().killJob(getJobID()); + } + catch (InterruptedException ie) { + throw new IOException(ie); + } } /** @@ -673,7 +683,7 @@ public class Job extends JobContextImpl implements JobContext { try { return getTaskCompletionEvents(startFrom, 10); } catch (InterruptedException ie) { - throw new RuntimeException(ie); + throw new IOException(ie); } } @@ -684,13 +694,18 @@ public class Job extends JobContextImpl implements JobContext { * @throws IOException */ public boolean killTask(final TaskAttemptID taskId) - throws IOException, InterruptedException { + throws IOException { ensureState(JobState.RUNNING); - return ugi.doAs(new PrivilegedExceptionAction() { - public Boolean run() throws IOException, InterruptedException { - return cluster.getClient().killTask(taskId, false); - } - }); + try { + return ugi.doAs(new PrivilegedExceptionAction() { + public Boolean run() throws IOException, InterruptedException { + return cluster.getClient().killTask(taskId, false); + } + }); + } + catch (InterruptedException ie) { + throw new IOException(ie); + } } /** @@ -700,14 +715,19 @@ public class Job extends JobContextImpl implements JobContext { * @throws IOException */ public boolean failTask(final TaskAttemptID taskId) - throws IOException, InterruptedException { + throws IOException { ensureState(JobState.RUNNING); - return ugi.doAs(new PrivilegedExceptionAction() { - @Override - public Boolean run() throws IOException, InterruptedException { - return cluster.getClient().killTask(taskId, true); - } - }); + try { + return ugi.doAs(new PrivilegedExceptionAction() { + @Override + public Boolean run() throws IOException, InterruptedException { + return cluster.getClient().killTask(taskId, true); + } + }); + } + catch (InterruptedException ie) { + throw new IOException(ie); + } } /** @@ -718,14 +738,19 @@ public class Job extends JobContextImpl implements JobContext { * @throws IOException */ public Counters getCounters() - throws IOException, InterruptedException { + throws IOException { ensureState(JobState.RUNNING); - return ugi.doAs(new PrivilegedExceptionAction() { - @Override - public Counters run() throws IOException, InterruptedException { - return cluster.getClient().getJobCounters(getJobID()); - } - }); + try { + return ugi.doAs(new PrivilegedExceptionAction() { + @Override + public Counters run() throws IOException, InterruptedException { + return cluster.getClient().getJobCounters(getJobID()); + } + }); + } + catch (InterruptedException ie) { + throw new IOException(ie); + } } /** diff --git a/hadoop-tools/hadoop-gridmix/src/test/java/org/apache/hadoop/mapred/gridmix/TestGridmixSummary.java b/hadoop-tools/hadoop-gridmix/src/test/java/org/apache/hadoop/mapred/gridmix/TestGridmixSummary.java index 2f735988b71..f8884625cbd 100644 --- a/hadoop-tools/hadoop-gridmix/src/test/java/org/apache/hadoop/mapred/gridmix/TestGridmixSummary.java +++ b/hadoop-tools/hadoop-gridmix/src/test/java/org/apache/hadoop/mapred/gridmix/TestGridmixSummary.java @@ -346,7 +346,7 @@ public class TestGridmixSummary { }; @Override - public boolean isSuccessful() throws IOException, InterruptedException { + public boolean isSuccessful() throws IOException { if (lost) { throw new IOException("Test failure!"); }