I have an application with the following set up. Kinesis data stream (retention period: 1day) ->
StreamExecutionEnvironment .getExecutionEnvironment() .addSource(new FlinkKinesisConsumer) .map(new MapFunction()) .addSink();
When the MapFunction crashes due to some transient exception, the Flink will restart all the operators. At the restart, the record that caused the crash was lost and never retried.
The intended behavior I am looking for is to reprocess the record although it might still cause exceptions.
I understand that based on https://docs.aws.amazon.com/streams/latest/dev/troubleshooting-consumers.html#w3aac23c27b5 KCL could skip records, but in our case, the exception is raised in MapFunction not in FlinkKinesisConsumer. We cannot afford loosing any record, and if there is crash-loop, I would rather handling manually than being silently skipped at KCL.
Is there a way to configure this not to loose any record?