Index: src/java/org/apache/hadoop/mapred/JobTracker.java =================================================================== --- src/java/org/apache/hadoop/mapred/JobTracker.java (revision 599245) +++ src/java/org/apache/hadoop/mapred/JobTracker.java (working copy) @@ -1915,27 +1915,46 @@ public void run() { while (!isInterrupted()) { - try { - JobInProgress.JobWithTaskContext j = queue.take(); - JobInProgress job = j.getJob(); - TaskInProgress tip = j.getTIP(); - String taskid = j.getTaskId(); - JobTrackerMetrics metrics = j.getJobTrackerMetrics(); - Task t; - TaskStatus status; - boolean isTipComplete = false; - TaskStatus.State state; - synchronized (JobTracker.this) { - synchronized (job) { - synchronized (tip) { - status = tip.getTaskStatus(taskid); - t = tip.getTaskObject(taskid); - state = status.getRunState(); - isTipComplete = tip.isComplete(); - } + ArrayList jlist=new ArrayList(queue.size()); + try { + queue.drainTo(jlist, queue.size()); + } catch (Exception ie) { + return; } - } - try { + JobInProgress[] joblist=new JobInProgress[jlist.size()]; + TaskInProgress[] tiplist = new TaskInProgress[jlist.size()]; + String[] taskidlist = new String[jlist.size()]; + JobTrackerMetrics[] metricslist =new JobTrackerMetrics[jlist.size()]; + + Iterator jiter=jlist.iterator(); + int count=0; + + while (jiter.hasNext()) { + JobInProgress.JobWithTaskContext j=jiter.next(); + joblist[count] = j.getJob(); + tiplist[count] = j.getTIP(); + taskidlist[count]= j.getTaskId(); + metricslist[count] = j.getJobTrackerMetrics(); + count++; + } + Task[] tlist=new Task[jlist.size()]; + TaskStatus[] statuslist=new TaskStatus[jlist.size()]; + boolean[] isTipCompletelist =new boolean[jlist.size()]; + + + TaskStatus.State[] statelist=new TaskStatus.State[jlist.size()]; + synchronized (JobTracker.this) { + for(count=0;count