feat(storage): write pipeline robustness and edge-case handling for object_store backend
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
ObjectStoreStorage::S3、ObjectStoreWriter、FileWrite::write、および issue に記載されている WriteMultipart 呼び出しから始めます。空のバケットとバケットのみのパスについて URL パースを確認し、その後 wait_for_capacity を評価する前に delete_stream と writer の状態処理を調べます。完了の条件は、列挙されたエッジケースが期待されるエラーを返し、書き込みが冗長なバッファリングを避け、state-guard テストが close/write の失敗をカバーし、ストリーミングのメモリ使用量が適切に制限されていることです。
索引モデルが issue の本文から書いたものです。
説明
Problem / Context
In #3165 (reviving #2257 for #2259), the foundational ObjectStoreStorage::S3 backend is established. To ensure production robustness and performance in the write pipeline, several edge cases and optimizations should be addressed as follow-up work:
Proposed Improvements
-
Zero-Copy Writes in
ObjectStoreWriter:FileWrite::writereceives ownedbytes::Bytes.object_store::WriteMultipartprovides aput(Bytes)method that buffers without slice copying, avoiding redundantextend_from_sliceallocations.
-
S3 URL Boundary Validation:
- Empty bucket strings (e.g.
s3:///path/to/fileors3://) currently pass initial URL host parsing as"". These should explicitly returnErrorKind::DataInvalid. - Ensure paths without trailing slashes (
s3://bucket) extractbucketand empty relative path cleanly.
- Empty bucket strings (e.g.
-
Stream Handling & State Machine Guards:
- Validate
delete_streamon empty streams (futures::stream::empty()) and ensure immediate error propagation on invalid URLs. - Add unit test coverage for
ObjectStoreWriterstate guards (e.g., verifyingclose()andwrite()error handling after writer has been closed).
- Validate
-
Backpressure & Memory Throttling:
- For high-throughput streaming, evaluate
WriteMultipart::wait_for_capacityto throttle producers and prevent unbounded 5MB chunk allocations in memory ahead of S3 network uploads.
- For high-throughput streaming, evaluate
Related
- #2258 (Umbrella: Implement Storage using object_store)
- #2259 (Implement ObjectStoreStorage::S3)
- #3165 (feat(storage): Implement ObjectStoreStorage::S3)
AI Disclosure
Drafted with AI assistance; reviewed and verified by contributor.
- 主要言語
- Rust
- スター
- 1.4k
- フォーク
- 574
- 平均マージ
- 1日 16時間
- マージ済み PR(30日)
- 70
環境構築
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/iceberg-rust のほかの issue
-
datafusion
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
apache/iceberg-rust#3297 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
apache/iceberg-rust#3285 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
apache/iceberg-rust#3280 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
apache/iceberg-rust#3234 · リアクション 2 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
apache/iceberg-rust#3229 ·
メンテナーはふだん 1 日以内に返信
apache/iceberg-rust の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
software-challenge/player_rust#22 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
foundry-rs/foundry#17175 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
メンテナーはふだん 1 日以内に返信
-
state:triage-needed
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
github/copilot-sdk#2793 ·
メンテナーはふだん 1 日以内に返信