diff --git src/mapred/org/apache/hadoop/mapred/JobTracker.java src/mapred/org/apache/hadoop/mapred/JobTracker.java index 5e2110f..baac5b0 100644 --- src/mapred/org/apache/hadoop/mapred/JobTracker.java +++ src/mapred/org/apache/hadoop/mapred/JobTracker.java @@ -4021,13 +4021,24 @@ public class JobTracker implements MRConstants, InterTrackerProtocol, checkJobTrackerState(); UserGroupInformation callerUGI = UserGroupInformation.getCurrentUser(); + JobInProgress job = null; synchronized (this) { - JobInProgress job = jobs.get(jobid); + job = jobs.get(jobid); if (job != null) { // check the job-access aclsManager.checkAccess(job, callerUGI, Operation.VIEW_JOB_COUNTERS); - Counters counters = new Counters(); + } else { + RetireJobInfo info = retireJobs.get(jobid); + if (info != null) { + return info.counters; + } + } + } + + if (job != null) { + Counters counters = new Counters(); + synchronized (job) { if (isJobInited(job)) { boolean isFine = job.getCounters(counters); if (!isFine) { @@ -4039,11 +4050,6 @@ public class JobTracker implements MRConstants, InterTrackerProtocol, else { return EMPTY_COUNTERS; } - } else { - RetireJobInfo info = retireJobs.get(jobid); - if (info != null) { - return info.counters; - } } }