mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-22 20:56:42 +00:00
`conversionQueue` is meant to run billy/legacy migrations serially on a single worker. On each `startConversion`, it currently always calls `runNextTask()`, which overwrites `taskDone` and starts another goroutine even when a migration is already running. That breaks two invariants during an upgrade with legacy entries in both the main store and limbo: 1. Migrations intended to be serial can run concurrently. 2. `close()` only waits for the most recently launched task, so shutdown can close the stores while a forgotten migration is still using them. Only start the next queued migration when no task is active (`taskDone == nil`). The existing `taskDone` completion path then advances the queue, and `close` reliably waits for the active task. |
||
|---|---|---|
| .. | ||
| blobpool | ||
| legacypool | ||
| locals | ||
| txorder | ||
| errors.go | ||
| reserver.go | ||
| subpool.go | ||
| txpool.go | ||
| validation.go | ||
| validation_test.go | ||