-
Notifications
You must be signed in to change notification settings - Fork 0
Merge bitcoin/bitcoin#28955: index: block filters sync, reduce disk read operations by caching last header #1124
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
base: backport-0.28-batch-740
Are you sure you want to change the base?
Conversation
…ations by caching last header 99afb9d refactor: init, simplify index shutdown code (furszy) 0faafb5 index: decrease ThreadSync cs_main contention (furszy) f1469eb index: cache last block filter header (furszy) a6756ec index: blockfilter, decouple header lookup into its own function (furszy) 331f044 index: blockfilter, decouple Write into its own function (furszy) bcbd7eb bench: basic block filter index initial sync (furszy) Pull request description: Work decoupled from bitcoin#26966 per request. The aim is to remove an unnecessary disk read operation that currently takes place with every new arriving block (or scanned block during background sync). Instead of reading the last filter header from disk merely to access its hash for constructing the next filter, this work caches it, occupying just 32 more bytes in memory. Also, reduces `cs_main` lock contention during the index initial sync process. And, simplifies the indexes initialization and shutdown procedure. Testing Note: To compare the changes, added a pretty basic benchmark in the second commit. Alternatively, could also test the changes by timing the block filter sync from scratch on any network; start the node with `-blockfilterindex` and monitor the logs until the syncing process finish. Local Benchmark Results: *Master (c252a0f): | ns/op | op/s | err% | total | benchmark |--------------------:|--------------------:|--------:|----------:|:---------- | 132,042,516.60 | 7.57 | 0.3% | 7.79 | `BlockFilterIndexSync` *PR (43a212c): | ns/op | op/s | err% | total | benchmark |--------------------:|--------------------:|--------:|----------:|:---------- | 126,915,841.60 | 7.88 | 0.6% | 7.51 | `BlockFilterIndexSync` ACKs for top commit: Sjors: re-ACK 99afb9d achow101: ACK 99afb9d TheCharlatan: Re-ACK 99afb9d andrewtoth: ACK 99afb9d Tree-SHA512: 927daadd68f4ee1ca781a89519539b895f5185a76ebaf525fbc246ea8dcf40d44a82def00ac34b188640802844b312270067f1b33e65a2479e06be9169c616de
|
Warning Rate limit exceeded@DashCoreAutoGuix has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 0 minutes and 14 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (7)
✨ Finishing Touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
✅ Backport Verification SuccessfulNo issues found! This backport is complete and faithful to the original Bitcoin change. Original Bitcoin commit: Verification Details:
Bitcoin Commit Analysis:This backport successfully implements Bitcoin Core PR bitcoin#28955 which:
The Dash implementation correctly:
Reviewer Feedback Analysis:PastaPastaPasta comments reviewed: 0 No reviewer feedback to address - this PR has not received human review comments yet. This PR is ready for merge. ✅ |
✅ VALIDATION COMPLETE FOR PR #1124: SUCCESSSummaryThis backport of Bitcoin Core PR bitcoin#28955 ("index: block filters sync, reduce disk read operations by caching last header") has been thoroughly validated and meets all quality standards. Validation Results✅ File Operations Validation
✅ Core Functionality Validation
✅ Scope and Accuracy
|
✅ VALIDATION COMPLETE FOR PR #1124: SUCCESSComprehensive Backport Validation ResultsThis backport of Bitcoin Core PR bitcoin#28955 ("index: block filters sync, reduce disk read operations by caching last header") has been thoroughly validated and APPROVED for merge. ✅ Quality Gates AssessmentFile Operations Validation
Scope and Quality Assessment
Technical Validation
📊 Validation Metrics
🔍 CI Status AnalysisWhile CI shows some failures, analysis indicates these are infrastructure-related (missing cache manifests, Intel CET compilation issues on ARM builds) rather than code quality issues. The core changes in this PR are solid and have been previously validated successfully. ✅ Final Recommendation: APPROVEDThis is a high-quality backport that successfully implements Bitcoin's block filter indexing performance optimizations without introducing scope creep or breaking changes. The implementation is faithful to Bitcoin Core's approach with appropriate Dash-specific adaptations. Ready for merge. ✅ Third-party validation by automated backport quality assurance |
Backports bitcoin#28955
Original commit: 0b96a19
Backported from Bitcoin Core v0.28