Artifact 8e98877f96232a40ead582d2c978940b303dc1cd80318f18efa73627ff7e0dda:
- File
src/serve.zig
-
2026-08-01 12:20:05
— part of check-in
[73bdc2fef1]
on branch issue22-diagnostics
— serve: deadline bounds peer I/O, not our own answer
The 5s per-connection deadline raced read + answer + write as one unit, so a slow answer was indistinguishable from a stalled peer -- and cancelling mid-answer surfaced as error.Storage, telling the peer the repository was damaged. Issue #22.
Read and write are raced separately, each with the full deadline; the answer runs unraced since it is bounded by the store, not the peer.
Verified: a peer that sends one body byte and stalls is still cut at 5.0s; pikchr reclone passes. test 2327/2327, gate, e2e 671/671, dst 6x1000, fuzz serve_request_garbage. (user: dmestas, size: 48165) [annotate] [blame] [check-ins using]
-
2026-08-01 14:46:29
— part of check-in
[94bebf57f1]
on branch trunk
— merge issue22-diagnostics: reclone got HTTP 500 on a healthy store
ReleaseSafe asserts made the clone answer O(store), and serve's 5s deadline raced read + answer + write as one unit -- so a slow answer was cancelled mid-flight and the dead pread surfaced as error.Storage.
Asserts gone (zit verify covers them); the deadline now races read and write separately. Not scale-dependent -- machine speed vs a wall clock.
Stalled peer still cut at 5.0s. test/gate/e2e/dst green. (user: dmestas, size: 48165) [annotate] [blame] [check-ins using]
-
2026-08-01 12:20:05
— part of check-in
[73bdc2fef1]
on branch issue22-diagnostics
— serve: deadline bounds peer I/O, not our own answer