Reading the below two statements I conclude that CheckpointMark.finalizeCheckpoint() will be called in order, unless there is a failure. What happens in a failure? What happens to subsequent checkpoints in the case of a checkpoint failure? How do I prevent event re-ordering in the case of a checkpoint failure?
There is no rewind method and I cannot find a way to tell the UnboundedReader to rewind. If I look at the pubsub UnboundedSource it seems to try and deal with the condition where the finalize itself fails, but not a failure elsewhere in the Checkpointing. The only time a rewind, nackAll() is called is when a new reader is created. If I have an UnboundedSource that is capable of rewinding to the last valid checkpoint and replaying events, how could I indicate to it to do so in the case of a Checkpoint failure that occurs outside the UnboundedSource? https://beam.apache.org/releases/javadoc/2.8.0/org/apache/beam/sdk/io/UnboundedSource.CheckpointMark.html<https://beam.apache.org/releases/javadoc/2.8.0/org/apache/beam/sdk/io/UnboundedSource.CheckpointMark.html> "In the absence of failures, all checkpoints will be finalized and they will be finalized in the same order they were taken from the UnboundedSource.UnboundedReader<https://beam.apache.org/releases/javadoc/2.8.0/org/apache/beam/sdk/io/UnboundedSource.UnboundedReader.html>." "It is possible for a checkpoint to be taken but this method never called. This method will never be called if the checkpoint could not be committed, and other failures may cause this method to never be called."