use of org.apache.flink.runtime.scheduler.strategy.ExecutionVertexID in project flink by splunk.
the class SchedulingPipelinedRegionComputeUtilTest method testTwoComponentsViaBlockingExchange2.
/**
* Tests the below topology.
*
* <pre>
* (a1) -+-> (b1) -+-> (c1)
* X X
* (a2) -+-> (b2) -+-> (c2)
*
* ^ ^
* | |
* (pipelined) (blocking)
* </pre>
*/
@Test
public void testTwoComponentsViaBlockingExchange2() {
TestingSchedulingTopology topology = new TestingSchedulingTopology();
TestingSchedulingExecutionVertex va1 = topology.newExecutionVertex();
TestingSchedulingExecutionVertex va2 = topology.newExecutionVertex();
TestingSchedulingExecutionVertex vb1 = topology.newExecutionVertex();
TestingSchedulingExecutionVertex vb2 = topology.newExecutionVertex();
TestingSchedulingExecutionVertex vc1 = topology.newExecutionVertex();
TestingSchedulingExecutionVertex vc2 = topology.newExecutionVertex();
topology.connect(va1, vb1, ResultPartitionType.PIPELINED).connect(va1, vb2, ResultPartitionType.PIPELINED).connect(va2, vb1, ResultPartitionType.PIPELINED).connect(va2, vb2, ResultPartitionType.PIPELINED).connect(vb1, vc1, ResultPartitionType.BLOCKING).connect(vb1, vc2, ResultPartitionType.BLOCKING).connect(vb2, vc1, ResultPartitionType.BLOCKING).connect(vb2, vc2, ResultPartitionType.BLOCKING);
Map<ExecutionVertexID, Set<SchedulingExecutionVertex>> pipelinedRegionByVertex = computePipelinedRegionByVertex(topology);
Set<SchedulingExecutionVertex> ra1 = pipelinedRegionByVertex.get(va1.getId());
Set<SchedulingExecutionVertex> ra2 = pipelinedRegionByVertex.get(va2.getId());
Set<SchedulingExecutionVertex> rb1 = pipelinedRegionByVertex.get(vb1.getId());
Set<SchedulingExecutionVertex> rb2 = pipelinedRegionByVertex.get(vb2.getId());
Set<SchedulingExecutionVertex> rc1 = pipelinedRegionByVertex.get(vc1.getId());
Set<SchedulingExecutionVertex> rc2 = pipelinedRegionByVertex.get(vc2.getId());
assertSameRegion(ra1, ra2, rb1, rb2);
assertDistinctRegions(ra1, rc1, rc2);
}
use of org.apache.flink.runtime.scheduler.strategy.ExecutionVertexID in project flink by splunk.
the class PipelinedRegionExecutionViewTest method finishingUnknownVertexThrowsException.
@Test(expected = IllegalArgumentException.class)
public void finishingUnknownVertexThrowsException() {
final PipelinedRegionExecutionView pipelinedRegionExecutionView = new PipelinedRegionExecutionView(TEST_PIPELINED_REGION);
final ExecutionVertexID unknownVertexId = new ExecutionVertexID(new JobVertexID(), 0);
pipelinedRegionExecutionView.vertexFinished(unknownVertexId);
}
use of org.apache.flink.runtime.scheduler.strategy.ExecutionVertexID in project flink by splunk.
the class ExecutionFailureHandlerTest method testRestartingSuppressedFailureHandlingResult.
/**
* Tests the case that task restarting is suppressed.
*/
@Test
public void testRestartingSuppressedFailureHandlingResult() {
// restart strategy suppresses restarting
backoffTimeStrategy.setCanRestart(false);
// trigger a task failure
final Throwable error = new Exception("expected test failure");
final long timestamp = System.currentTimeMillis();
final FailureHandlingResult result = executionFailureHandler.getFailureHandlingResult(new ExecutionVertexID(new JobVertexID(), 0), error, timestamp);
// verify results
assertFalse(result.canRestart());
assertThat(result.getError(), containsCause(error));
assertThat(result.getTimestamp(), is(timestamp));
assertFalse(ExecutionFailureHandler.isUnrecoverableError(result.getError()));
try {
result.getVerticesToRestart();
fail("get tasks to restart is not allowed when restarting is suppressed");
} catch (IllegalStateException ex) {
// expected
}
try {
result.getRestartDelayMS();
fail("get restart delay is not allowed when restarting is suppressed");
} catch (IllegalStateException ex) {
// expected
}
assertEquals(0, executionFailureHandler.getNumberOfRestarts());
}
use of org.apache.flink.runtime.scheduler.strategy.ExecutionVertexID in project flink by splunk.
the class SchedulingPipelinedRegionComputeUtilTest method testIndividualVertices.
/**
* Tests that validates that a graph with single unconnected vertices works correctly.
*
* <pre>
* (v1)
*
* (v2)
*
* (v3)
* </pre>
*/
@Test
public void testIndividualVertices() {
TestingSchedulingTopology topology = new TestingSchedulingTopology();
TestingSchedulingExecutionVertex v1 = topology.newExecutionVertex();
TestingSchedulingExecutionVertex v2 = topology.newExecutionVertex();
TestingSchedulingExecutionVertex v3 = topology.newExecutionVertex();
Map<ExecutionVertexID, Set<SchedulingExecutionVertex>> pipelinedRegionByVertex = computePipelinedRegionByVertex(topology);
Set<SchedulingExecutionVertex> r1 = pipelinedRegionByVertex.get(v1.getId());
Set<SchedulingExecutionVertex> r2 = pipelinedRegionByVertex.get(v2.getId());
Set<SchedulingExecutionVertex> r3 = pipelinedRegionByVertex.get(v3.getId());
assertDistinctRegions(r1, r2, r3);
}
use of org.apache.flink.runtime.scheduler.strategy.ExecutionVertexID in project flink by splunk.
the class SchedulingPipelinedRegionComputeUtilTest method testDiamondWithMixedPipelinedAndBlockingExchanges.
/**
* Tests the below topology.
*
* <pre>
* (blocking)
* |
* v
* +|-(v2)-+
* | |
* (v1)--+ +--(v4)
* | |
* +--(v3)-+
* </pre>
*/
@Test
public void testDiamondWithMixedPipelinedAndBlockingExchanges() {
TestingSchedulingTopology topology = new TestingSchedulingTopology();
TestingSchedulingExecutionVertex v1 = topology.newExecutionVertex();
TestingSchedulingExecutionVertex v2 = topology.newExecutionVertex();
TestingSchedulingExecutionVertex v3 = topology.newExecutionVertex();
TestingSchedulingExecutionVertex v4 = topology.newExecutionVertex();
topology.connect(v1, v2, ResultPartitionType.BLOCKING).connect(v1, v3, ResultPartitionType.PIPELINED).connect(v2, v4, ResultPartitionType.PIPELINED).connect(v3, v4, ResultPartitionType.PIPELINED);
Map<ExecutionVertexID, Set<SchedulingExecutionVertex>> pipelinedRegionByVertex = computePipelinedRegionByVertex(topology);
Set<SchedulingExecutionVertex> r1 = pipelinedRegionByVertex.get(v1.getId());
Set<SchedulingExecutionVertex> r2 = pipelinedRegionByVertex.get(v2.getId());
Set<SchedulingExecutionVertex> r3 = pipelinedRegionByVertex.get(v3.getId());
Set<SchedulingExecutionVertex> r4 = pipelinedRegionByVertex.get(v4.getId());
assertSameRegion(r1, r2, r3, r4);
}
Aggregations