Repository: tez
Updated Branches:
  refs/heads/master 7b30785bd -> fb7b146ef


TEZ-3707. TezSharedExecutor race condition in awaitTermination vs isTerminated. 
(harishjp)


Project: http://git-wip-us.apache.org/repos/asf/tez/repo
Commit: http://git-wip-us.apache.org/repos/asf/tez/commit/fb7b146e
Tree: http://git-wip-us.apache.org/repos/asf/tez/tree/fb7b146e
Diff: http://git-wip-us.apache.org/repos/asf/tez/diff/fb7b146e

Branch: refs/heads/master
Commit: fb7b146eff3a3e574f9524131e4d42c2a7de57b0
Parents: 7b30785
Author: Harish JP <[email protected]>
Authored: Thu May 4 09:24:39 2017 +0530
Committer: Harish JP <[email protected]>
Committed: Thu May 4 09:24:39 2017 +0530

----------------------------------------------------------------------
 .../java/org/apache/tez/common/TezSharedExecutor.java   | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tez/blob/fb7b146e/tez-common/src/main/java/org/apache/tez/common/TezSharedExecutor.java
----------------------------------------------------------------------
diff --git 
a/tez-common/src/main/java/org/apache/tez/common/TezSharedExecutor.java 
b/tez-common/src/main/java/org/apache/tez/common/TezSharedExecutor.java
index 93bf3cc..3cc72d5 100644
--- a/tez-common/src/main/java/org/apache/tez/common/TezSharedExecutor.java
+++ b/tez-common/src/main/java/org/apache/tez/common/TezSharedExecutor.java
@@ -277,7 +277,17 @@ public class TezSharedExecutor implements TezExecutors {
 
     @Override
     public boolean isTerminated() {
-      return isShutdown() && futures.isEmpty();
+      if (!isShutdown()) {
+        return false;
+      }
+      // futures should be empty ideally, but there is a corner case where all 
the futures are done
+      // but not yet removed from futures map, for that case we check if the 
future is done.
+      for (ManagedFutureTask<?> future : futures.keySet()) {
+        if (!future.isDone()) {
+          return false;
+        }
+      }
+      return true;
     }
 
     @Override

Reply via email to