Skip to content

feat(storage): zero-copy writes and empty bucket validation for object_store backend - #3167

Closed
Sruhvx-jpg wants to merge 3 commits into
apache:mainfrom
Sruhvx-jpg:os-s3-write-pipeline
Closed

feat(storage): zero-copy writes and empty bucket validation for object_store backend#3167
Sruhvx-jpg wants to merge 3 commits into
apache:mainfrom
Sruhvx-jpg:os-s3-write-pipeline

Conversation

@Sruhvx-jpg

Copy link
Copy Markdown

Which issue does this PR close?

What changes are included in this PR?

  • Zero-Copy Writes: Switch ObjectStoreWriter::write from writer.write(&bs) to writer.put(bs) to pass owned bytes::Bytes directly without copying memory into intermediate buffers.
  • Empty Bucket Validation: Reject S3 URLs with empty bucket strings (e.g. s3:///path/to/file or s3://) with ErrorKind::DataInvalid.
  • Unit Tests: Added test_parse_s3_url_empty_bucket.

Context

Builds on the foundation introduced in #3165 to resolve #3166.

Are these changes tested?

Yes, all 12 unit tests passing in crates/storage/object_store (cargo test -p iceberg-storage-object_store).

CTTY and others added 3 commits September 7, 2026 14:59
…oncurrent deletes

- Hoist `object_store` 0.13 to workspace dependencies to align with DataFusion.
- Support `s3n://` scheme alongside `s3://` and `s3a://` in `parse_s3_url`.
- Optimize `delete_stream` with `try_for_each_concurrent` instead of sequential loop.
- Add unit tests for `s3n://` URL parsing and FileIO/Storage serialization roundtrips.
- Wire crate workspace lints and publish flag.
@Sruhvx-jpg

Copy link
Copy Markdown
Author

Closing this PR as these improvements (zero-copy writes and empty bucket validation) have been folded directly into #3165 to keep the review unified and avoid duplicate diffs.

@Sruhvx-jpg Sruhvx-jpg closed this Sep 7, 2026
@Sruhvx-jpg
Sruhvx-jpg deleted the os-s3-write-pipeline branch September 7, 2026 10:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(storage): write pipeline robustness and edge-case handling for object_store backend

2 participants