mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-20 05:41:35 +00:00
## Why this should be merged Fixes a potential race in parallel handler where the goroutine that closes `whenProcessed` could observe a re-assigned channel for the next block, leading to an incorrect close and possible double-close panic. ## How this works `finishBlock()` waits for the channel to be closed by the goroutine, instead of for the `WaitGroup` that closes _just_ before it, which is what allowed the race. ## How this was tested It's not possible to include a specific test. This PR therefore also includes thorough documentation of every per-block goroutine and when it is guaranteed to complete. --------- Co-authored-by: Arran Schlosberg <me@arranschlosberg.com> |
||
|---|---|---|
| .. | ||
| parallel | ||