Fix race condition in Foreman.runPhysicalPlan() between setting total fragment 
count and increment finished fragments

by calling QueryStatus.setTotalFragments() before fragmentManager.runFragments()

Conflicts:
        
exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/Foreman.java


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

Branch: refs/heads/master
Commit: dd2ae0aec74adc225b8381b8f4ba0b929d55fea0
Parents: e410180
Author: Aditya Kishore <[email protected]>
Authored: Mon Jun 9 14:40:53 2014 -0700
Committer: Jacques Nadeau <[email protected]>
Committed: Mon Jun 9 17:09:43 2014 -0700

----------------------------------------------------------------------
 .../java/org/apache/drill/exec/work/foreman/Foreman.java    | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/dd2ae0ae/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/Foreman.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/Foreman.java 
b/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/Foreman.java
index 23c325e..94e2cd4 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/Foreman.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/Foreman.java
@@ -28,7 +28,6 @@ import 
org.apache.drill.common.exceptions.ExecutionSetupException;
 import org.apache.drill.common.logical.LogicalPlan;
 import org.apache.drill.common.logical.PlanProperties.Generator.ResultMode;
 import org.apache.drill.exec.ExecConstants;
-import org.apache.drill.exec.cache.CachedVectorContainer;
 import org.apache.drill.exec.cache.DistributedCache.CacheConfig;
 import org.apache.drill.exec.cache.DistributedCache.SerializationMode;
 import org.apache.drill.exec.exception.FragmentSetupException;
@@ -314,16 +313,16 @@ public class Foreman implements Runnable, Closeable, 
Comparable<Object>{
         }
       }
 
+      int totalFragments = 1 + intermediateFragments.size() + 
leafFragments.size();
+      fragmentManager.getStatus().setTotalFragments(totalFragments);
+      fragmentManager.getStatus().updateCache();
       logger.debug("Fragments stored.");
 
       logger.debug("Submitting fragments to run.");
       fragmentManager.runFragments(bee, work.getRootFragment(), 
work.getRootOperator(), initiatingClient, leafFragments, intermediateFragments);
-      logger.debug("Fragments running.");
 
+      logger.debug("Fragments running.");
       state.updateState(QueryState.PENDING, QueryState.RUNNING);
-      int totalFragments = 1 + intermediateFragments.size() + 
leafFragments.size();
-      fragmentManager.getStatus().setTotalFragments(totalFragments);
-      fragmentManager.getStatus().updateCache();
 
     } catch (ExecutionSetupException | RpcException e) {
       fail("Failure while setting up query.", e);

Reply via email to