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);