We use the config setting execution.checkpointing.externalized-checkpoint-retention to distinguish three cases:
- delete on cancellation
- retain on cancellation
- no externalized checkpoints (if no value is set)
It would be easier to understand if we had an explicit enum value NO_EXTERNALIZED_CHECKPOINTS for the third case in ExternalizedCheckpointCleanup. This would also avoid potential issues for clients with handling null values (for example, null values being dropped on serialization could be annoying when trying to change from RETAIN_ON_CANCELLATION to no external checkpoints).