CTTY opened a new issue, #3266: URL: https://github.com/apache/iceberg-rust/issues/3266
### What's the feature are you trying to implement? This epic tracks the implementation of the stateful transaction architecture defined in [RFC-0003: Stateful Transactions and Snapshot Production](https://github.com/apache/iceberg-rust/blob/main/docs/rfcs/0003_stateful_transaction.md) (introduced in #2620). Today, transaction actions are replayed from scratch on every catalog conflict. That is fine for simple metadata updates, but snapshot-producing actions (appends, and eventually merging operations like RowDelta/RewriteFiles) benefit from retaining work across retry attempts: stable execution identity, reusable metadata processing, and ownership of generated files that may require cleanup. The RFC establishes: - A stateful `TransactionAction` model: each action pairs immutable intent with exclusively-owned, retry-persistent state; the transaction owns catalog refresh, retry, and replay. - Persistent snapshot producers (`SimpleSnapshotProducer`, `MergingSnapshotProducer`) as action state, replacing the attempt-scoped producer and its hook traits. - Artifact ownership and terminal cleanup semantics (`Committed` / `Failed` / `Unknown`). - Reuse rules for retained work across retry/rebase. ### Milestones (per RFC §8.1) - [ ] **1. Stateful actions and replay** — associated `State` type, action-entry ownership, fresh-state cloning; migrate existing actions with `State = ()` (#3265) - [ ] **2. Persistent simple snapshot production** — extract stateless helpers, introduce `SimpleSnapshotProducer`, migrate `FastAppendAction`, remove the attempt-scoped `SnapshotProducer` and hook traits - [ ] **3. Merging and artifact lifecycle** — introduce `MergingSnapshotProducer`, manifest filtering, reusable added-manifest production; wire terminal `CommitStatus` reporting and cleanup - [ ] **4. Validation capabilities** — reusable history processing and shared validation operations for snapshot-producing actions ### Out of scope End-to-end operation implementations built on top of this foundation — e.g. `RowDelta` / `RewriteFiles` — are tracked separately (#1607) and become unblocked once milestones 2–4 land. ### Related issues - #1607 — `RewriteFiles` support (builds on milestones 2–4) - #2242 — process delete files when writing snapshots - #1344 / #2517 — snapshot validation logic (addressed by milestone 4) - #2556 — unify `RewriteManifestsAction` with snapshot production - #3252 — `SnapshotProducer` manifest-rewrite limitations (superseded by the producer rework) ### Willingness to contribute I can contribute to this feature independently -- 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] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
