mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-16 18:08:21 +00:00
968ec4a8be
A small object whose data shards are inlined in xl.meta can be reassembled straight from the already-resolved metadata, skipping the Erasure reconstruct pipeline. The fast path existed but was opt-in (`RUSTFS_GET_SMALL_OBJECT_DIRECT_MEMORY`, default off), so every deployment paid the full shard-read fan-out for eligible small GETs by default. - Flip `DEFAULT_RUSTFS_GET_SMALL_OBJECT_DIRECT_MEMORY` to `true`. The path is correctness-neutral on a miss: `try_get_object_direct_data_shards_*` returns None when the inline reassembly cannot satisfy the read, and the GET then proceeds through the normal shard-read pipeline. The env stays as a kill switch (`=false` restores the legacy path). - Drop the bucket-level `versioned` / `version_suspended` exclusions. The decision is made on `fi` — the already-resolved target version — so reassembling its inlined data is correct on a versioned bucket too. An explicit versionId GET still falls back (`opts.version_id`), and a delete-marker latest is still rejected. The two now-unused fallback reasons and their metric labels are removed. - Tests updated: a versioned latest-version object is now eligible / `Use` (covers the newly allowed path); the removed reasons' label assertions are dropped. cargo check --lib --tests and the direct_memory unit tests pass on macOS (the change is fully cross-platform). Co-authored-by: heihutu <heihutu@gmail.com>