Changes touching this path
- loot-s3 gives an object-store request a budget that grows with its body in place of one 60 s deadline over the whole transfer. a get now reads its answer read by read, so the 60 s client timeout, renamed IDLE_BUDGET, bounds silence and not length: an answer that keeps arriving is read however long it takes, and one that stops fails after IDLE_BUDGET and names how many bytes it got. a request that sends a body is held, as its own request timeout, to upload_budget: IDLE_BUDGET plus the whole seconds of the body at UPLINK_FLOOR_BYTES_PER_SECOND, a copy of the native uplink floor of 256 KiB a second. reqwest blocking sends the body inside the one wait for the answer to begin, so an upload can have a deadline and not a silence limit, as in loot-net (#2079), and that reasoning is recorded at the code. the formula is copied from loot_net::wire::transfer_budget with pointers both ways rather than moved to loot-core or reached through a new loot-net edge: the copy drops the rounding that keys a connection pool and the cap a loot host enforces, bounds the send alone, and a shared home would tie the rate for a client link to a loot host to the rate for a server link to its bucket. no rate for that link was measured, since no script in the scripts repo measures one; the floor is the native choice, not a measurement. a timeout on each wait names its budget and what it covers. pinned over loopback peers: a large get that stalls mid-body, a get whose answer keeps arriving past the idle budget, a put the store reads slowly past it, a large put the store stops reading, and the formula on its own. red first (13 passed and 5 failed). red under mutation, counts read each time: the get read by one bytes() wait (17 passed and 2 failed), no deadline on a request with a body (17 and 2), the body earning nothing (16 and 3), the body capped at 64 MiB (18 and 1), part seconds rounded up (17 and 2), a deadline on every request (18 and 1), a read timeout not recognised (17 and 2), the put deadline not named (17 and 2), each restored to green (19 passed). no migration, no format byte and no published wording moves; loot-forge links loot-s3, so this is live once the forge is redeployed, and loot-relayd links it too but the relay the scripts repo deploys is loot serve, which does not. the workspace suite is green (4370 passed over 138 binaries, 12 ignored) (#2309)
ac9b9c50 · 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.