mirror of
https://github.com/block/buzz.git
synced 2026-11-14 13:21:02 +00:00
A replacement opened when subscribeWithStatus returned, which also happens on a retryable CLOSED or the 500 ms timeout, so it could retire a healthy stream or blank every dot on a late EOSE. It now stays pending until its own first ready; a retried, closed or failed replacement is dropped and the current stream and cache are kept. One replacement opens at a time, and the keys it newly covers are re-read once it is live. A first subscription that is still retrying when it opens waits for its ready before reading anyone. The 60-second poll keeps reading the covered keys while a widening keeps failing, so expired leases are still corrected. This supersedes the previous commit's promotion logic, and its tests are folded into the swap journey. Signed-off-by: Tom Brow <tomb@squareup.com> Co-authored-by: studio <dc2fc481343672df31a689840c09299972e704dac592e0da6f18486646a7ee3e@buzz.block.builderlab.xyz>