Author: suresh
Date: Wed Sep 19 05:22:36 2012
New Revision: 1387451

URL: http://svn.apache.org/viewvc?rev=1387451&view=rev
Log:
MAPREDUCE-4400. Merging change from branch-1 to branch-1-win.

Modified:
    hadoop/common/branches/branch-1-win/CHANGES.txt
    
hadoop/common/branches/branch-1-win/src/mapred/org/apache/hadoop/mapred/Task.java

Modified: hadoop/common/branches/branch-1-win/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hadoop/common/branches/branch-1-win/CHANGES.txt?rev=1387451&r1=1387450&r2=1387451&view=diff
==============================================================================
--- hadoop/common/branches/branch-1-win/CHANGES.txt (original)
+++ hadoop/common/branches/branch-1-win/CHANGES.txt Wed Sep 19 05:22:36 2012
@@ -14,6 +14,9 @@ Release 1.1.0 - unreleased
 
     MAPREDUCE-3118. Backport Gridmix and Rumen features to
                     branch-0.20-security (Ravi Gummadi via amarrk)
+    MAPREDUCE-4400. Avoid task finish sleep to improve small job/workflow
+    latency. (llu)
+
   BUG FIXES
 
     HDFS-2305. Running multiple 2NNs can result in corrupt file system. (atm)

Modified: 
hadoop/common/branches/branch-1-win/src/mapred/org/apache/hadoop/mapred/Task.java
URL: 
http://svn.apache.org/viewvc/hadoop/common/branches/branch-1-win/src/mapred/org/apache/hadoop/mapred/Task.java?rev=1387451&r1=1387450&r2=1387451&view=diff
==============================================================================
--- 
hadoop/common/branches/branch-1-win/src/mapred/org/apache/hadoop/mapred/Task.java
 (original)
+++ 
hadoop/common/branches/branch-1-win/src/mapred/org/apache/hadoop/mapred/Task.java
 Wed Sep 19 05:22:36 2012
@@ -655,14 +655,19 @@ abstract public class Task implements Wr
       // get current flag value and reset it as well
       boolean sendProgress = resetProgressFlag();
       while (!taskDone.get()) {
-        synchronized(lock) {
-          done = false;
-        }
         try {
           boolean taskFound = true; // whether TT knows about this task
           // sleep for a bit
           try {
-            Thread.sleep(PROGRESS_INTERVAL);
+            synchronized(lock) {
+              done = false;
+              lock.wait(PROGRESS_INTERVAL);
+              if (taskDone.get()) {
+                done = true;
+                lock.notify();
+                return;
+              }
+            }
           } 
           catch (InterruptedException e) {
             if (LOG.isDebugEnabled()) {
@@ -730,6 +735,7 @@ abstract public class Task implements Wr
       // Updating resources specified in ResourceCalculatorPlugin
       if (pingThread != null) {
         synchronized(lock) {
+          lock.notify(); // wake up the wait in the while loop
           while(!done) {
             lock.wait();
           }


Reply via email to