chore(refactor) refactor manifest list writer to take Box<dyn FileWrite> to prep for encryption#2564
Merged
blackmwk merged 8 commits intoJun 4, 2026
Conversation
…te> to prep for encryption
eeb7f21 to
3a5e3a6
Compare
xanderbailey
commented
Jun 4, 2026
| self.table.metadata().current_snapshot_id(), | ||
| next_seq_num, | ||
| ), | ||
| FormatVersion::V3 => ManifestListWriter::v3( |
Contributor
Author
There was a problem hiding this comment.
Alternative to this would be adding a v3_encrypted constructor and leave all other constructors alone and then ManifestListWriter internally stores a pinned future to a file writer similar to the approach proposed in #2568 but honestly I think this API break is acceptable and keeps constructors uniform. The worry with introducing a new constructor here for v3_encrypted is it's easy for future contributors to misuse the api and "forget" to encrypt things correctly.
blackmwk
pushed a commit
that referenced
this pull request
Jun 4, 2026
…ite> and location (#2568) ## Which issue does this PR close? <!-- We generally require a GitHub issue to be filed for all bug fixes and enhancements and this helps us generate change logs for our releases. You can link an issue to this PR using the GitHub syntax. For example `Closes #123` indicates that this PR will close issue #123. --> Working towards: #2034 ## What changes are included in this PR? Similar reasons to #2564. For the current encryption work we will construct a FileWrite to do transparent encryption on write, this means we need to change the constructor of the `ManifestWriterBuilder` to now take both a `Box<dyn FileWrite>` and a `location`. <!-- Provide a summary of the modifications in this PR. List the main changes such as new features, bug fixes, refactoring, or any other updates. --> ## Are these changes tested? <!-- Specify what test covers (unit test, integration test, etc.). If tests are not included in your PR, please explain why (for example, are they covered by existing tests)? -->
Contributor
|
Please help to resolve conflicts. |
…/refactor_manifest_list_writer Resolve conflict from b60717a (manifest_list split into modules) by applying FileWrite refactor to the new writer.rs file.
blackmwk
approved these changes
Jun 4, 2026
Contributor
blackmwk
left a comment
There was a problem hiding this comment.
Thanks @xanderbailey for this pr!
SreeramGarlapati
added a commit
to SreeramGarlapati/iceberg-rust
that referenced
this pull request
Jun 4, 2026
…r API Upstream apache#2564 changed `ManifestListWriter::v1/v2/v3` to take `Box<dyn FileWrite>` instead of `OutputFile` (to prep for encryption). Mirror sibling `transaction/snapshot.rs` by extracting the writer ahead of the format-version match.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Which issue does this PR close?
Working towards: #2034
What changes are included in this PR?
Change
ManifestListWriterto take aBox<dyn FileWrite>in the constructor rather than anOutputFile. For encryption support we haveEncryptedOutputFilewhich has aBox<dyn FileWrite>for transparent streaming encryption on write.Are these changes tested?