mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-10-24 04:33:17 +00:00
58c26e1629
TestSSEBroadcaster_AddClientWritesCurrentStatusBeforeReturning failed under -race in CI on unrelated frontend PRs (2479, 2485). The test broadcast a stage and connected straight away. When the broadcast loop picked that message up after the client had registered, it queued the stage for the new client too, so the client's writer goroutine wrote the httptest recorder while the test read it without a lock. AddClient itself is correct: it writes the preamble and current status before returning, and a stage racing the connect can reach the client twice, which the update modal already ignores. The test now lets the broadcast reach an earlier client before connecting, so nothing else writes the recorder and the status in the body can only come from the synchronous snapshot write. Reproduced by injecting the CI schedule through -overlay (broadcast loop held until the client registers, caller paused as AddClient returns): the old test failed 199/200 runs with DATA RACE, the new one 0/200. A mutant that moves the snapshot write onto the writer goroutine still fails the new test 100/100.