danny0405 opened a new issue, #20404: URL: https://github.com/apache/hudi/issues/20404
### Task Description Implement full-table TRUNCATE through an empty insert_overwrite_table replace commit, preserving timeline/savepoints and metadata-table consistency. Empty input must still replace all existing file groups. Coordinate this with streaming checkpoint-generation isolation: derive a stable identifier from target/flow/checkpoint generation, use it for both dedup checks and commit metadata, retain it on normal restart, and change it when SDP creates a fresh checkpoint directory. These changes must ship together: retaining old sink metadata while restarting batch IDs at zero under the old identifier can silently skip data. Define legacy-checkpoint migration and explicit physical-purge compatibility behavior. Manual checkpoint deletion in place is unsupported; checkpoint relocation requires an explicit rebuild/migration. Keep the truncate–alter–append non-atomic window explicit. Related #16342 covers truncate concurrency more broadly; coordinate implementation, but this task specifically couples timeline preservation to SDP checkpoint reset correctness. ### Acceptance criteria - [ ] Successful truncate publishes a completed replace commit, including for empty input; history/savepoints and metadata-table consistency are preserved subject to retention. - [ ] Failure before truncate commit preserves the previous snapshot; failure afterward leaves the documented empty snapshot. - [ ] Ordinary restart skips committed batches; full refresh replays batch 0..N under a new identifier without skipping old high-water marks. - [ ] Tests cover failure after Hudi commit but before Spark checkpoint completion, empty refresh, checkpoint-path changes, and legacy identifiers. - [ ] Ordinary SQL truncate regression tests and migration/retention documentation are included. ### Task Type Code improvement/refactoring ### Related Issues Parent feature issue: #20401 RFC: #19997 (under review; implementation must follow the agreed contract). This task can start independently; coordinate integration with the sibling tasks under #20401. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
