You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Optional, like getRange. A defaultGetRanges utility could provide the coalescing fallback (reusing groupRequests from #347) for stores that don't override. Same pattern as Rust object_store::get_ranges, but narrower: just this method, not the full list/put/delete surface.
Open questions
Single-path (getRanges(key, ranges[])) or multi-path (getRanges(requests[]{key, range}))? Single-path is simpler and matches object_store.
Should the sharding codec call getRanges directly, or is that a follow-up?
From #347 (discussion with @kylebarron).
Where this helps today
Sharding codec (sharding.ts#L38-L76): two sequential
getRangecalls per shard (index suffix + chunk data). These are sequential, so a wrapper like feat: add BatchedFetchStore for request batching and range merging #347 can't batch them.Chunk indexing (get.ts#L53-L61): concurrent chunk fetches hit the same shard file. feat: add BatchedFetchStore for request batching and range merging #347 intercepts this at the wrapper level, but a store-level method would let backends optimize natively (S3 multipart GET, local FS single file handle).
Proposal
Optional, like
getRange. AdefaultGetRangesutility could provide the coalescing fallback (reusinggroupRequestsfrom #347) for stores that don't override. Same pattern as Rustobject_store::get_ranges, but narrower: just this method, not the fulllist/put/deletesurface.Open questions
getRanges(key, ranges[])) or multi-path (getRanges(requests[]{key, range}))? Single-path is simpler and matchesobject_store.getRangesdirectly, or is that a follow-up?