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]

Reply via email to