refactor: introduce two new cache structures to minimize cs_main cont…#6418
Conversation
…main contention during llmq signing
e6a28c4 to
6cae4a5
Compare
| auto pindexStart = [&]() -> const CBlockIndex* | ||
| { | ||
| LOCK(cs_main); | ||
| auto chainTip = cachedChainTip.load(); |
There was a problem hiding this comment.
if cachedChainTip is null, better to load it from active_chain IMO
… contention 3d67771 refactor: add in quorumBaseBlockIndexCache to reduce cs_main contention (pasta) Pull request description: ## Issue being fixed or feature implemented subset of #6418; only includes the new quorumBaseBlockIndexCache, doesn't include the caching of the chain-tip, as that introduced regressions I'm still debugging. ## What was done? introduce a LRU cache for quorumHash -> const CBlockIndex*; this should significantly reduce cs_main contention during high transaction load. ## How Has This Been Tested? Ran tests locally; let's see CI happy, and I also intend to run this on a testnet MN first and see the level of contention reduction ## Breaking Changes None ## Checklist: _Go over all the following points, and put an `x` in all the boxes that apply._ - [ ] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have added or updated relevant unit/integration/functional/e2e tests - [ ] I have made corresponding changes to the documentation - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_ ACKs for top commit: UdjinM6: utACK 3d67771 knst: utACK 3d67771 Tree-SHA512: dbb4bdafed095397ca0e12dbd8bba25c108d199538387c71b1ff4285af821f9d9ad0ad4426407a015528270f3c163fa66ce91755efb1c8a7a90fd7cb70a918bc
|
This pull request has conflicts, please rebase. |
❌ Backport Verification - CATASTROPHIC FAILUREOriginal Bitcoin commit: Not found Critical violations:
❌ AnalysisFiles changed:
All files are in the llmq/ directory which contains Dash-specific Long Living Masternode Quorum functionality that does not exist in Bitcoin Core. The commit messages show:
This is clearly native Dash development work, not a Bitcoin Core backport. This verification system is designed specifically for Bitcoin Core backports. Native Dash development should follow different review processes and not be processed through the backport verification system. This PR has been automatically closed. If this is intended to be a Bitcoin backport, please create a new PR with proper Bitcoin commit references and backport structure. |
|
Automatically closed: This is not a Bitcoin Core backport but appears to be native Dash development. The backport verification system is designed specifically for Bitcoin Core backports. Please use appropriate review processes for native Dash development. |
|
Closing: the LRU cache portion was already merged. Remaining cs_main-free work is superseded by #6962. |
…ention during llmq signing
Please remove the italicized help prompts before submitting or merging
Provide a general summary of your changes in the Title above
Pull requests without a rationale and clear improvement may be closed
immediately.
Please provide clear motivation for your patch and explain how it improves
Dash Core user experience or Dash Core developer experience
significantly:
src/test/) orfunctional tests (see
test/). Contributors should note which tests covermodified code. If no tests exist for a region of modified code, new tests
should accompany the change.
explanation of the potential issue as well as reasoning for the way the bug
was fixed.
If a feature is based on a lot of dependencies, contributors should first
consider building the system outside of Dash Core, if possible.
Issue being fixed or feature implemented
What was done?
Describe your changes in detail
How Has This Been Tested?
Please describe in detail how you tested your changes.
Include details of your testing environment, and the tests you ran
to see how your change affects other areas of the code, etc.
Breaking Changes
Please describe any breaking changes your code introduces
Checklist:
Go over all the following points, and put an
xin all the boxes that apply.