mirror of
https://github.com/block/buzz.git
synced 2026-11-06 01:11:33 +00:00
- Every sync frame (initial EVENTs, EOSE, live EVENTs) is queued only while the request still owns its ID, checked under the lifecycle lock after queue room is reserved. A CLOSE or replacing REQ during a head read or a blocked send now fences the frame. - EOSE is inside the snapshot budget and the cancellation race, so a slow reader cannot hold the handler permits past the budget. - The held list refuses a change before storing it when it would pass MAX_SYNC_EVENTS or a 4 MiB byte bound for held removals, and holds nothing once the sync must resync. Co-authored-by: Larry <627498bd4bd1f281a16431e3c6cce3b5c25b6692798c78672298aefbf2f8f8b5@buzz.block.builderlab.xyz> Signed-off-by: Logan Johnson <loganj@squareup.com>