Search before asking
Paimon version
paimon 1.3.1
Compute Engine
Flink 1.16
Minimal reproduce step
- Start a checkpoint-enabled Flink Dedicated Streaming Compact job.
- Wait until a checkpoint records snapshot N as the next source cursor.
- Commit newer snapshots.
- Explicitly trigger snapshot expiration, or use a non-write-only table whose commit path performs expiration, so that snapshot N is removed.
- Trigger Flink failover and restore from the checkpoint.
- Observe repeated OutOfRangeException for snapshot N.
What doesn't meet your expectations?
A Flink Dedicated Streaming Compact job can become permanently stuck after recovering from a checkpoint whose next snapshot has already been removed by
Paimon snapshot retention.
After recovery, the job continues reading the expired snapshot ID and fails with OutOfRangeException. Flink retries the job from the same checkpoint, so
every restart uses the same invalid snapshot ID. The job never advances to a valid snapshot and cannot self-recover.
Typical error:
OutOfRangeException: Snapshot does not exist or has expired
Anything else?
No
Are you willing to submit a PR?
Search before asking
Paimon version
paimon 1.3.1
Compute Engine
Flink 1.16
Minimal reproduce step
What doesn't meet your expectations?
A Flink Dedicated Streaming Compact job can become permanently stuck after recovering from a checkpoint whose next snapshot has already been removed by
Paimon snapshot retention.
After recovery, the job continues reading the expired snapshot ID and fails with OutOfRangeException. Flink retries the job from the same checkpoint, so
every restart uses the same invalid snapshot ID. The job never advances to a valid snapshot and cannot self-recover.
Typical error:
OutOfRangeException: Snapshot does not exist or has expired
Anything else?
No
Are you willing to submit a PR?