mirror of
https://github.com/rustfs/rustfs.git
synced 2026-09-01 01:38:18 +00:00
5104be1d23
A PUT with HTTP preconditions took the per-object namespace write lock before ingesting the request body and held it until commit, so any concurrent read of the same object queued behind client-paced body ingestion until the 5s acquire timeout and surfaced as 503. Exposed as a deterministic S3 Implemented Tests gate failure when #6770 routed 1 MB conditional writes onto the streaming path (rustfs/backlog#2074). Keep a lock-free advisory precondition check before the body for fast 412/404, and evaluate the authoritative check under the put_object commit lock, reusing the deferred shape data movement already uses. Reads during ingestion now return the last committed version, and a precondition invalidated mid-stream fails closed with 412 at commit.