Browse Source

MAPREDUCE-3226. Fix shutdown of fetcher threads. Contributed by Vinod K V.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1187116 13f79535-47bb-0310-9956-ffa450edef68
Arun Murthy 13 years ago
parent
commit
02d5fa3e62

+ 2 - 0
hadoop-mapreduce-project/CHANGES.txt

@@ -1712,6 +1712,8 @@ Release 0.23.0 - Unreleased
 
     MAPREDUCE-3188. Ensure correct shutdown in services. (todd via acmurthy) 
 
+    MAPREDUCE-3226. Fix shutdown of fetcher threads. (vinodkv via acmurthy) 
+
 Release 0.22.0 - Unreleased
 
   INCOMPATIBLE CHANGES

+ 7 - 3
hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/task/reduce/EventFetcher.java

@@ -60,7 +60,7 @@ class EventFetcher<K,V> extends Thread {
     LOG.info(reduce + " Thread started: " + getName());
     
     try {
-      while (true) {
+      while (true && !Thread.currentThread().isInterrupted()) {
         try {
           int numNewMaps = getMapCompletionEvents();
           failures = 0;
@@ -68,7 +68,9 @@ class EventFetcher<K,V> extends Thread {
             LOG.info(reduce + ": " + "Got " + numNewMaps + " new map-outputs");
           }
           LOG.debug("GetMapEventsThread about to sleep for " + SLEEP_TIME);
-          Thread.sleep(SLEEP_TIME);
+          if (!Thread.currentThread().isInterrupted()) {
+            Thread.sleep(SLEEP_TIME);
+          }
         } catch (IOException ie) {
           LOG.info("Exception in getting events", ie);
           // check to see whether to abort
@@ -76,7 +78,9 @@ class EventFetcher<K,V> extends Thread {
             throw new IOException("too many failures downloading events", ie);
           }
           // sleep for a bit
-          Thread.sleep(RETRY_PERIOD);
+          if (!Thread.currentThread().isInterrupted()) {
+            Thread.sleep(RETRY_PERIOD);
+          }
         }
       }
     } catch (InterruptedException e) {

+ 1 - 1
hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/task/reduce/Fetcher.java

@@ -135,7 +135,7 @@ class Fetcher<K,V> extends Thread {
   
   public void run() {
     try {
-      while (true) {
+      while (true && !Thread.currentThread().isInterrupted()) {
         MapHost host = null;
         try {
           // If merge is on, block