From 08e6d312e855b5025211d46aeed6722e9cfac203 Mon Sep 17 00:00:00 2001 From: Jason Darrell Lowe Date: Mon, 17 Feb 2014 16:14:58 +0000 Subject: [PATCH] MAPREDUCE-5757. ConcurrentModificationException in JobControl.toList. Contributed by Jason Lowe git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1569038 13f79535-47bb-0310-9956-ffa450edef68 --- hadoop-mapreduce-project/CHANGES.txt | 3 +++ .../apache/hadoop/mapreduce/lib/jobcontrol/JobControl.java | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/hadoop-mapreduce-project/CHANGES.txt b/hadoop-mapreduce-project/CHANGES.txt index 02099b7ce7..b6e10faf49 100644 --- a/hadoop-mapreduce-project/CHANGES.txt +++ b/hadoop-mapreduce-project/CHANGES.txt @@ -165,6 +165,9 @@ Release 2.4.0 - UNRELEASED MAPREDUCE-5670. CombineFileRecordReader should report progress when moving to the next file (Chen He via jlowe) + MAPREDUCE-5757. ConcurrentModificationException in JobControl.toList + (jlowe) + Release 2.3.1 - UNRELEASED INCOMPATIBLE CHANGES diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/lib/jobcontrol/JobControl.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/lib/jobcontrol/JobControl.java index ca4857ecb7..b0b7a3c119 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/lib/jobcontrol/JobControl.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/lib/jobcontrol/JobControl.java @@ -79,7 +79,7 @@ public class JobControl implements Runnable { this.runnerState = ThreadState.READY; } - synchronized private static List toList( + private static List toList( LinkedList jobs) { ArrayList retv = new ArrayList(); for (ControlledJob job : jobs) { @@ -122,11 +122,11 @@ public class JobControl implements Runnable { /** * @return the jobs in the success state */ - public List getSuccessfulJobList() { + synchronized public List getSuccessfulJobList() { return toList(this.successfulJobs); } - public List getFailedJobList() { + synchronized public List getFailedJobList() { return toList(this.failedJobs); }