TM should own changelog backend state to prevent re-uploading state on checkpoint abortion (or missing confirmation). A simpler solution to only own aborted state is less maintanable in the long run.
For that, on TM state should be tracked and discarded (on subsumption+materialization; on shutdown).
This ticket is about creating TaskStateRegistry and using it in ChangelogStateBackend (for non-materialized part only; for materialized see FLINK-23344).
Externalized checkpoints and savepoints should be supported (or please create a separate ticket).
Retained checkpoints is a separate ticket: FLINK-23251