-
Notifications
You must be signed in to change notification settings - Fork 1.2k
evo/llmq/spork: Fix various (potential) locking issues #3829
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Serialization of CSporkManager
also misses a lock for mapSporksByHash
and mapSporksActive
i guess? Doesn't matter that much because it currently only seems to be used by flatdb on start/shutdown but since we are on it here.. :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
utACK
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
utACK
* Fix potential deadlock in `CSporkManager::UpdateSpork()` * Protect `inputRequestIds` with cs lock * Protect `curDBTransaction` in `CEvoDB::CommitRootTransaction()` * Check for `AssertLockNotHeld` in `EnforceBestChainLock()` instead of just having a comment in code * Protect spork maps on (de)serialization
* Fix potential deadlock in `CSporkManager::UpdateSpork()` * Protect `inputRequestIds` with cs lock * Protect `curDBTransaction` in `CEvoDB::CommitRootTransaction()` * Check for `AssertLockNotHeld` in `EnforceBestChainLock()` instead of just having a comment in code * Protect spork maps on (de)serialization
* Fix potential deadlock in `CSporkManager::UpdateSpork()` * Protect `inputRequestIds` with cs lock * Protect `curDBTransaction` in `CEvoDB::CommitRootTransaction()` * Check for `AssertLockNotHeld` in `EnforceBestChainLock()` instead of just having a comment in code * Protect spork maps on (de)serialization
* Fix potential deadlock in `CSporkManager::UpdateSpork()` * Protect `inputRequestIds` with cs lock * Protect `curDBTransaction` in `CEvoDB::CommitRootTransaction()` * Check for `AssertLockNotHeld` in `EnforceBestChainLock()` instead of just having a comment in code * Protect spork maps on (de)serialization
595a672 Fix thread names to fit into 15 symbols (dashpay#3897) (UdjinM6) 2f492d4 evo/llmq/spork: Fix various (potential) locking issues (dashpay#3829) (UdjinM6) 453a74f Fix two potential issues in the way pending islocks are processed (dashpay#3678) (UdjinM6) 902809c replace `inter-quorum` with `intra-quorum` (dashpay#3642) (PastaPastaPasta) 46e51db Fix CSigningManager::VerifyRecoveredSig (dashpay#3546) (UdjinM6) dd02dfd Use exponential backoff timeouts for recovery (dashpay#3535) (Alexander Block) Pull request description: Each commits backports a different PR, as mentioned in the commit name ACKs for top commit: 595a672 Liquid369: ACK 595a672 Fuzzbawls: utACK 595a672 Tree-SHA512: 4d66215d3b1944266802045f66d2bec1a9e4eb7c7e2bfb16fcaf16bafda7e47225b43129094081990a5a25a9b9f753e9071f30d357dbe51e592f3b824384a461
Pls see individual commits, tl;dr: