Today — UringLocalFileSystem::get_opts (crates/oxidelake-storage/src/uring.rs:260-284) reads options.range and options.head only. LocalFileSystem::get_opts calls options.check_preconditions(&meta)? (object_store-0.13.2/src/local.rs:428), so if_match / if_none_match / if_modified_since are honoured by one store and ignored by the other. The docs describe the two stores as behaviourally identical; the conformance test (tests/object_store_conformance.rs::exercise) has no precondition cases. Also from the audit's P12: mpsc::unbounded_channel() (:154), File::open per read (:71), get_ranges serialised (:286-292).
Fix — call options.check_preconditions(&meta)? before the ranged read; add if_match/if_none_match cases to exercise so both stores are checked; bound the channel. Land alongside the error-path fix so the store is ready to be wired.
Done when — the conformance suite covers preconditions and passes for both stores under --features io-uring.
Today —
UringLocalFileSystem::get_opts(crates/oxidelake-storage/src/uring.rs:260-284) readsoptions.rangeandoptions.headonly.LocalFileSystem::get_optscallsoptions.check_preconditions(&meta)?(object_store-0.13.2/src/local.rs:428), soif_match/if_none_match/if_modified_sinceare honoured by one store and ignored by the other. The docs describe the two stores as behaviourally identical; the conformance test (tests/object_store_conformance.rs::exercise) has no precondition cases. Also from the audit's P12:mpsc::unbounded_channel()(:154),File::openper read (:71),get_rangesserialised (:286-292).Fix — call
options.check_preconditions(&meta)?before the ranged read; addif_match/if_none_matchcases toexerciseso both stores are checked; bound the channel. Land alongside the error-path fix so the store is ready to be wired.Done when — the conformance suite covers preconditions and passes for both stores under
--features io-uring.