feat(parquet): rfc0013 green — store local I/O surface (put/get/delete) - #231
Conversation
|
Warning Review limit reached
More reviews will be available in 44 minutes and 56 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughAdds three public async methods ( ChangesStore async CRUD via object_store
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
Adds the first “green” slice of RFC 0013’s object-storage seam in ourios-parquet by introducing a minimal async Store I/O surface over object_store (exercised against the local filesystem backend), without migrating any consumers yet.
Changes:
- Add
Store::{put,get,delete}async APIs plus internal key resolution under the store prefix. - Add a unit test that round-trips bytes through the local backend and verifies delete behavior.
- Add
tokioas a dev-dependency to support the async test (and updateCargo.lockaccordingly).
Reviewed changes
Copilot reviewed 2 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| crates/ourios-parquet/src/store.rs | Implements put/get/delete, path resolution, and adds a local backend round-trip test. |
| crates/ourios-parquet/Cargo.toml | Adds tokio as a dev-dependency for the new async test. |
| Cargo.lock | Records the new tokio dev-dependency in the lockfile. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
What
First
greenslice for RFC 0013 (object-storage backend): theStoreI/O surface overobject_store, exercised on theLocalFileSystembackend. Foundation that the consumer-migration slices build on; RFC staysreduntil all 8 §5 stubs pass.Store::{put, get, delete}(async,Vec<u8>) overobject_store::ObjectStoreExt, withresolve()joining a/-delimited key under the store prefix (prefix empty at this stage — scoping is a later slice, RFC0013.5).store::testsunit test: byte object round-trips throughStore::local, and a delete removes it.tokiodev-dep (the I/O surface is async; already in the workspace tree).Verified locally
cargo fmt,cargo clippy -p ourios-parquet --all-targets(clean),cargo test -p ourios-parquet(the newstore::tests::local_store_put_get_delete_round_trippasses; the 8 RFC0013 §5 stubs stay#[ignore]d),cargo deny check(ok — no new graph entries; theawsfeature for S3 comes in a later slice).Not in this slice (the green phasing)
This deliberately does not migrate consumers yet. Remaining green slices (each its own PR, un-ignoring stubs as they land):
Store+ conditional PUT (PutMode::Create/Update) → RFC0013.4.Store→ RFC0013.2 / .8 (local backend, no regression; forward-compat).object_storeawsfeature) + MinIOtestcontainerslane → RFC0013.1 / .3 / .5 / .7.The migration strategy (thread
&Storethrough consumers vs additive) and the single-writer lease mechanism are decided in slices 1–3 — I'll confirm the strategy before slice 2.Invariants
Adds the seam's I/O surface; no consumer uses it yet (behaviour unchanged). Serves §3.6; WAL stays local (§3.4).
🤖 Generated with Claude Code
Summary by CodeRabbit