Start no AS, peer or peering write after the stop deadline (closes #189)
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
A write can run past the stop deadline while a full batch's wake-up or a tick waits beside Stop's context. The select picked one at random, so about half the time the AS, peer or peering handler started another write after the deadline. Each loop now takes a waiting stop first, as the prefix handler's does. The prefix, AS and peer handlers' flush loops were near-copies, so they are now one function, flushLoop. A new test for each handler fails about half its runs on the old code. The AS and peer handler tests give the flush timer an interval longer than the test. A timer flush during the fill can no longer hang TestPeerHandlerWaitsAtTheMaximumBatchSize. Model: opus-5-5
This commit was merged in pull request #191.
This commit is contained in:
@@ -33,6 +33,11 @@ tested.
|
||||
|
||||
# Completed Steps
|
||||
|
||||
- 2026-10-27: once the stop deadline has passed, the AS, peer and peering
|
||||
handlers start no write either. A full batch or a tick of the timer that
|
||||
waited while a write ran past the deadline could still start one. The flush
|
||||
goroutines of the prefix, AS and peer handlers now run the same code (closes
|
||||
#189)
|
||||
- 2026-10-27: once the stop deadline has passed, the prefix handler starts no
|
||||
flush. A batch that filled while a write ran past the deadline could still be
|
||||
written after it (closes #188)
|
||||
|
||||
Reference in New Issue
Block a user