Changes touching this path
- the forge keeps a bounded local disk cache of object bytes in front of R2 and overlaps 64 blob reads instead of 16, and a /fetch that runs out of budget says how far it got: blob_cache.rs CachedBlobStore writes through on put, reads through on get, removes the copy on delete and drops a fill a delete overtook, checks a blake3 checksum over every cached byte and fetches a copy that fails it again rather than serving it, and evicts the least recently read past LOOT_FORGE_BLOB_CACHE_BYTES (1 GiB by default, 0 for none) in LOOT_FORGE_BLOB_CACHE_DIR (default loot-forge-blob-cache under the temp dir, /tmp in the image); Forge::from_env puts it in front of the S3 tier, and exists and presign still ask the bucket. the budget refusal keeps its leading words and adds K of N objects read and the width, with the elapsed time to a tenth of a second. MAX_CONCURRENT_GETS is 64 because live, 16 in flight spent the 15 s budget on the 5,484 ticket files, a floor of about 44 ms per R2 GET, and 64 fits them up to about 175 ms a GET. it corrects mmxkront claims: the 2.9 ms R2 pace and the R2 latency test name, the stale bytes fetch comment, a budget check restored before each published key lookup, the fetch_bytes stop wording, the first failure recorded is the one reported rather than the lowest thread, and the mid fetch budget test no longer rides a 40 ms budget. pinned: at 44 ms a get a cold fetch of 5,484 objects answers in about 4.3 s and a warm one in about 0.07 s with no tier get and the same bytes. red under named mutations, each restored: over the 14 blob_cache tests, a hit that asks the tier (9 passed and 5 failed), a miss that keeps nothing (12 and 2), no eviction (12 and 2), no refresh on read (13 and 1), no checksum (13 and 1), a delete that leaves the copy (13 and 1), a fill that ignores a delete (13 and 1), an open that indexes nothing (13 and 1), a zero cap left on (13 and 1); over the 5 fetch_latency tests, 16 in flight (4 and 1), the refusal without its progress (4 and 1), the last failure reported (4 and 1), and the budget asked once before the fan-out (3 and 2). cargo test green, 4777 passed over 144 binaries with 13 ignored. owes a forge deploy, and no env is required; it also carries the new ticket rxxtvlvl and a comment on mmxkront (rxxtvlvl)
a0025c9d · dbf3dbe6…
Renames are not followed. loot's tree maps a path to an address, so a rename is a delete and an add. This list is the history of the name, not of the bytes.