blocksync: wait for poolRoutine to stop in (*Reactor).OnStop (backport #1879)#1982
Merged
blocksync: wait for poolRoutine to stop in (*Reactor).OnStop (backport #1879)#1982
Conversation
* blocksync: wait for poolRoutine to stop in (*Reactor).OnStop blocksync.(*Reactor).poolRoutine goroutine lifetime was not supervised, so OnStop returning did not provide a guarantee that it was done. As a result, the other services could be stopped and a subsequent call to bcR.blockExec.ApplyBlock would cause a panic, typically a leveldb closed error. This change uses a sync.WaitGroup to ensure that OnStop returns after poolRoutine has returned. This also triggers the poolRoutine method to return on a signal from bcR.pool.Quit() instead of just bcR.Quit(), which seems to be important as (*Reactor).OnStop itself can only stop the BlockPool (bcR.pool), while the BaseReactor.BaseService's quit channel will only be closed _after_ (*Reactor).OnStop has returned. * rename wg field, comment on strayish select before retry * break poolRoutine on either Quit before quick retry * update changelog * break the loop with an IsRunning check * do the waitgroup Add and Defer at the same site for clarity * check both services IsRunning in poolRoutine * fix oopsie --------- Co-authored-by: Anton Kaliaev <anton.kalyaev@gmail.com> (cherry picked from commit 7ea352e)
melekes
approved these changes
Jan 7, 2024
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is an automatic backport of pull request #1879 done by Mergify.
Mergify commands and options
More conditions and actions can be found in the documentation.
You can also trigger Mergify actions by commenting on this pull request:
@Mergifyio refreshwill re-evaluate the rules@Mergifyio rebasewill rebase this PR on its base branch@Mergifyio updatewill merge the base branch into this PR@Mergifyio backport <destination>will backport this PR on<destination>branchAdditionally, on Mergify dashboard you can:
Finally, you can contact us on https://mergify.com