Search in sources :

Example 6 with ExecutionPhase

use of io.crate.execution.dsl.phases.ExecutionPhase in project crate by crate.

the class NodeOperationCtxTest method testIsUpstreamOnSameNodeWithTwoUpstreamsThatAreOnTheSameNode.

@Test
public void testIsUpstreamOnSameNodeWithTwoUpstreamsThatAreOnTheSameNode() {
    ExecutionPhase p1 = StubPhases.newUpstreamPhase(0, DistributionInfo.DEFAULT_SAME_NODE, "n2");
    ExecutionPhase p2 = StubPhases.newUpstreamPhase(2, DistributionInfo.DEFAULT_SAME_NODE, "n2");
    ExecutionPhase p3 = newPhase(3, "n2");
    NodeOperationCtx opCtx = new NodeOperationCtx("n1", List.of(NodeOperation.withDownstream(p1, p3, (byte) 0), NodeOperation.withDownstream(p2, p3, (byte) 0)));
    assertThat(opCtx.upstreamsAreOnSameNode(3), is(true));
}
Also used : ExecutionPhase(io.crate.execution.dsl.phases.ExecutionPhase) NodeOperationCtx(io.crate.execution.jobs.JobSetup.NodeOperationCtx) Test(org.junit.Test)

Example 7 with ExecutionPhase

use of io.crate.execution.dsl.phases.ExecutionPhase in project crate by crate.

the class JobSetup method prepareOnHandler.

public List<CompletableFuture<StreamBucket>> prepareOnHandler(SessionSettings sessionInfo, Collection<? extends NodeOperation> nodeOperations, RootTask.Builder taskBuilder, List<Tuple<ExecutionPhase, RowConsumer>> handlerPhases, SharedShardContexts sharedShardContexts) {
    Context context = new Context(clusterService.localNode().getId(), sessionInfo, taskBuilder, LOGGER, distributingConsumerFactory, nodeOperations, sharedShardContexts);
    for (Tuple<ExecutionPhase, RowConsumer> handlerPhase : handlerPhases) {
        context.registerLeaf(handlerPhase.v1(), handlerPhase.v2());
    }
    registerContextPhases(nodeOperations, context);
    LOGGER.trace("prepareOnHandler: nodeOperations={}, handlerPhases={}, targetSourceMap={}", nodeOperations, handlerPhases, context.opCtx.targetToSourceMap);
    IntHashSet leafs = new IntHashSet();
    for (Tuple<ExecutionPhase, RowConsumer> handlerPhase : handlerPhases) {
        ExecutionPhase phase = handlerPhase.v1();
        createContexts(phase, context);
        leafs.add(phase.phaseId());
    }
    leafs.addAll(context.opCtx.findLeafs());
    for (IntCursor cursor : leafs) {
        prepareSourceOperations(cursor.value, context);
    }
    assert context.opCtx.allNodeOperationContextsBuilt() : "some nodeOperations haven't been processed";
    return context.directResponseFutures;
}
Also used : TransactionContext(io.crate.metadata.TransactionContext) NodeContext(io.crate.metadata.NodeContext) IntCursor(com.carrotsearch.hppc.cursors.IntCursor) IntHashSet(com.carrotsearch.hppc.IntHashSet) ExecutionPhase(io.crate.execution.dsl.phases.ExecutionPhase) ProjectingRowConsumer(io.crate.execution.engine.pipeline.ProjectingRowConsumer) RowConsumer(io.crate.data.RowConsumer)

Example 8 with ExecutionPhase

use of io.crate.execution.dsl.phases.ExecutionPhase in project crate by crate.

the class ExplainPlan method extractPhasesTimingsFrom.

private static Map<String, Object> extractPhasesTimingsFrom(Map<String, Map<String, Object>> timingsByNodeId, NodeOperationTree operationTree) {
    Map<String, Object> allPhases = new TreeMap<>();
    for (NodeOperation operation : operationTree.nodeOperations()) {
        ExecutionPhase phase = operation.executionPhase();
        getPhaseTimingsAndAddThemToPhasesMap(phase, timingsByNodeId, allPhases);
    }
    ExecutionPhase leafExecutionPhase = operationTree.leaf();
    getPhaseTimingsAndAddThemToPhasesMap(leafExecutionPhase, timingsByNodeId, allPhases);
    return allPhases;
}
Also used : NodeOperation(io.crate.execution.dsl.phases.NodeOperation) ExecutionPhase(io.crate.execution.dsl.phases.ExecutionPhase) TreeMap(java.util.TreeMap)

Example 9 with ExecutionPhase

use of io.crate.execution.dsl.phases.ExecutionPhase in project crate by crate.

the class NodeOperationCtxTest method testIsUpstreamOnSameNodeWithSameNodeOptimization.

@Test
public void testIsUpstreamOnSameNodeWithSameNodeOptimization() {
    ExecutionPhase p1 = StubPhases.newUpstreamPhase(0, DEFAULT_BROADCAST, "n1");
    ExecutionPhase p2 = newPhase(1, "n1");
    NodeOperationCtx opCtx = new NodeOperationCtx("n1", singletonList(NodeOperation.withDownstream(p1, p2, (byte) 0)));
    // withDownstream set DistributionInfo to SAME_NODE because both phases are on n1
    assertThat(opCtx.upstreamsAreOnSameNode(1), is(true));
}
Also used : ExecutionPhase(io.crate.execution.dsl.phases.ExecutionPhase) NodeOperationCtx(io.crate.execution.jobs.JobSetup.NodeOperationCtx) Test(org.junit.Test)

Example 10 with ExecutionPhase

use of io.crate.execution.dsl.phases.ExecutionPhase in project crate by crate.

the class NodeOperationCtxTest method testIsUpstreamOnSameNodeWithUpstreamOnOtherNode.

@Test
public void testIsUpstreamOnSameNodeWithUpstreamOnOtherNode() {
    ExecutionPhase p1 = StubPhases.newUpstreamPhase(0, DEFAULT_BROADCAST, "n2");
    ExecutionPhase p2 = newPhase(1, "n1");
    NodeOperationCtx opCtx = new NodeOperationCtx("n1", singletonList(NodeOperation.withDownstream(p1, p2, (byte) 0)));
    assertThat(opCtx.upstreamsAreOnSameNode(1), is(false));
}
Also used : ExecutionPhase(io.crate.execution.dsl.phases.ExecutionPhase) NodeOperationCtx(io.crate.execution.jobs.JobSetup.NodeOperationCtx) Test(org.junit.Test)

Aggregations

ExecutionPhase (io.crate.execution.dsl.phases.ExecutionPhase)12 RowConsumer (io.crate.data.RowConsumer)5 NodeOperationCtx (io.crate.execution.jobs.JobSetup.NodeOperationCtx)5 Test (org.junit.Test)5 ArrayList (java.util.ArrayList)4 Tuple (io.crate.common.collections.Tuple)3 CollectingRowConsumer (io.crate.data.CollectingRowConsumer)3 NodeOperation (io.crate.execution.dsl.phases.NodeOperation)3 TransactionContext (io.crate.metadata.TransactionContext)3 Collection (java.util.Collection)3 IntHashSet (com.carrotsearch.hppc.IntHashSet)2 IntCursor (com.carrotsearch.hppc.cursors.IntCursor)2 ExecutionPhases (io.crate.execution.dsl.phases.ExecutionPhases)2 StreamBucket (io.crate.execution.engine.distribution.StreamBucket)2 DownstreamRXTask (io.crate.execution.jobs.DownstreamRXTask)2 PageBucketReceiver (io.crate.execution.jobs.PageBucketReceiver)2 RootTask (io.crate.execution.jobs.RootTask)2 Task (io.crate.execution.jobs.Task)2 List (java.util.List)2 Map (java.util.Map)2