Author: acmurthy
Date: Mon May 6 14:46:32 2013
New Revision: 1479591
URL: http://svn.apache.org/r1479591
Log:
Merge -c 1479589 from branch-1 to branch-1.2 to fix MAPREDUCE-5206. Ensure that
a job doesn't get added to RetiredJobs multiple times in JobTracker.
Contributed by Arun C. Murthy.
Modified:
hadoop/common/branches/branch-1.2/CHANGES.txt
hadoop/common/branches/branch-1.2/src/mapred/org/apache/hadoop/mapred/JobTracker.java
Modified: hadoop/common/branches/branch-1.2/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-1.2/CHANGES.txt?rev=1479591&r1=1479590&r2=1479591&view=diff
==============================================================================
--- hadoop/common/branches/branch-1.2/CHANGES.txt (original)
+++ hadoop/common/branches/branch-1.2/CHANGES.txt Mon May 6 14:46:32 2013
@@ -624,6 +624,9 @@ Release 1.2.0 - 2013.05.05
HADOOP-9544. Backport UTF8 encoding fixes. (Chris Nauroth via szetszwo)
+ MAPREDUCE-5206. Ensure that a job doesn't get added to RetiredJobs
+ multiple times in JobTracker. (acmurthy)
+
Release 1.1.2 - 2013.01.30
INCOMPATIBLE CHANGES
Modified:
hadoop/common/branches/branch-1.2/src/mapred/org/apache/hadoop/mapred/JobTracker.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-1.2/src/mapred/org/apache/hadoop/mapred/JobTracker.java?rev=1479591&r1=1479590&r2=1479591&view=diff
==============================================================================
---
hadoop/common/branches/branch-1.2/src/mapred/org/apache/hadoop/mapred/JobTracker.java
(original)
+++
hadoop/common/branches/branch-1.2/src/mapred/org/apache/hadoop/mapred/JobTracker.java
Mon May 6 14:46:32 2013
@@ -652,15 +652,25 @@ public class JobTracker implements MRCon
Map.Entry<String, ArrayList<JobInProgress>> entry =
userToJobsMapIt.next();
ArrayList<JobInProgress> userJobs = entry.getValue();
+
+ // Remove retiredJobs from userToJobsMap to ensure we don't
+ // retire them multiple times
Iterator<JobInProgress> it = userJobs.iterator();
- while (it.hasNext() &&
- userJobs.size() > MAX_COMPLETE_USER_JOBS_IN_MEMORY) {
+ while (it.hasNext()) {
JobInProgress jobUser = it.next();
if (retiredJobs.contains(jobUser)) {
LOG.info("Removing from userToJobsMap: " +
jobUser.getJobID());
it.remove();
- } else if (minConditionToRetire(jobUser, now)) {
+ }
+ }
+
+ // Now, check for #jobs per user
+ it = userJobs.iterator();
+ while (it.hasNext() &&
+ userJobs.size() > MAX_COMPLETE_USER_JOBS_IN_MEMORY) {
+ JobInProgress jobUser = it.next();
+ if (minConditionToRetire(jobUser, now)) {
LOG.info("User limit exceeded. Marking job: " +
jobUser.getJobID() + " for retire.");
retiredJobs.add(jobUser);