use of org.apache.flink.runtime.operators.lifecycle.event.OperatorFinishedEvent in project flink by apache.
the class FinishingValidator method validateOperatorLifecycle.
@Override
public void validateOperatorLifecycle(TestJobWithDescription job, String operatorId, int subtaskIndex, List<TestEvent> operatorEvents) {
boolean opFinished = false;
Set<Long> finalCheckpointCandidates = new HashSet<>();
for (TestEvent ev : operatorEvents) {
if (ev instanceof OperatorFinishedEvent) {
opFinished = true;
} else if (ev instanceof CheckpointStartedEvent) {
if (opFinished) {
finalCheckpointCandidates.add(((CheckpointStartedEvent) ev).checkpointID);
}
} else if (ev instanceof CheckpointCompletedEvent) {
if (finalCheckpointCandidates.contains(((CheckpointCompletedEvent) ev).checkpointID)) {
return;
}
} else if (opFinished) {
fail(format("Unexpected event after operator %s[%d] finished: %s", operatorId, subtaskIndex, ev));
}
}
assertTrue(format("Operator %s[%d] wasn't finished (events: %s)", operatorId, subtaskIndex, operatorEvents), opFinished);
fail(format("Operator %s[%d] was finished but didn't finish the checkpoint after that;" + "checkpoints started after finish: %s (events (excluding watermarks): %s)", operatorId, subtaskIndex, finalCheckpointCandidates, operatorEvents.stream().filter(ev -> !(ev instanceof WatermarkReceivedEvent)).collect(toList())));
}
use of org.apache.flink.runtime.operators.lifecycle.event.OperatorFinishedEvent in project flink by apache.
the class OneInputTestStreamOperator method finish.
@Override
public void finish() throws Exception {
eventQueue.add(new OperatorFinishedEvent(operatorID, getRuntimeContext().getIndexOfThisSubtask(), getRuntimeContext().getAttemptNumber(), lastDataSent, new OperatorFinishedEvent.LastReceivedVertexDataInfo(lastDataReceived)));
super.finish();
}
use of org.apache.flink.runtime.operators.lifecycle.event.OperatorFinishedEvent in project flink by apache.
the class TwoInputTestStreamOperator method finish.
@Override
public void finish() throws Exception {
collectEvent(new OperatorFinishedEvent(operatorID, getRuntimeContext().getIndexOfThisSubtask(), getRuntimeContext().getAttemptNumber(), lastDataSent, new LastReceivedVertexDataInfo(lastDataReceived)));
super.finish();
}
use of org.apache.flink.runtime.operators.lifecycle.event.OperatorFinishedEvent in project flink by apache.
the class TestJobDataFlowValidator method checkDataFlow.
public static void checkDataFlow(TestJobWithDescription testJob, boolean withDrain) {
Map<String, Map<Integer, OperatorFinishedEvent>> finishEvents = new HashMap<>();
for (TestEvent ev : testJob.eventQueue.getAll()) {
if (ev instanceof OperatorFinishedEvent) {
finishEvents.computeIfAbsent(ev.operatorId, ign -> new HashMap<>()).put(ev.subtaskIndex, ((OperatorFinishedEvent) ev));
}
}
for (JobVertex upstream : testJob.jobGraph.getVertices()) {
for (IntermediateDataSet produced : upstream.getProducedDataSets()) {
JobEdge edge = produced.getConsumer();
Optional<String> upstreamIDOptional = getTrackedOperatorID(upstream, true, testJob);
Optional<String> downstreamIDOptional = getTrackedOperatorID(edge.getTarget(), false, testJob);
if (upstreamIDOptional.isPresent() && downstreamIDOptional.isPresent()) {
final String upstreamID = upstreamIDOptional.get();
final String downstreamID = downstreamIDOptional.get();
if (testJob.sources.contains(upstreamID)) {
// TODO: if we add tests for FLIP-27 sources we might need to adjust
// this condition
LOG.debug("Legacy sources do not have the finish() method and thus do not" + " emit FinishEvent");
} else {
checkDataFlow(upstreamID, downstreamID, edge, finishEvents, withDrain);
}
} else {
LOG.debug("Ignoring edge (untracked operator): {}", edge);
}
}
}
}
use of org.apache.flink.runtime.operators.lifecycle.event.OperatorFinishedEvent in project flink by apache.
the class MultiInputTestOperator method finish.
@Override
public void finish() throws Exception {
eventQueue.add(new OperatorFinishedEvent(operatorId, getRuntimeContext().getIndexOfThisSubtask(), getRuntimeContext().getAttemptNumber(), lastDataSent.get(), new LastReceivedVertexDataInfo(lastDataReceived)));
super.finish();
}
Aggregations