-
Notifications
You must be signed in to change notification settings - Fork 39
Fix problematic tests using risky pattern #824
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
WalkthroughThe changes update error handling in concurrent test cases within two test files. Instead of performing immediate error assertions inside goroutines, errors are now collected through channels and checked after all goroutines complete. This centralizes error checking, ensuring all errors are reported collectively after concurrent operations finish. Changes
Possibly related PRs
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 golangci-lint (1.64.8)Error: you are using a configuration file for golangci-lint v2 with golangci-lint v1: please use golangci-lint v2 Note ⚡️ AI Code Reviews for VS Code, Cursor, WindsurfCodeRabbit now has a plugin for VS Code, Cursor and Windsurf. This brings AI code reviews directly in the code editor. Each commit is reviewed immediately, finding bugs before the PR is raised. Seamless context handoff to your AI code agent ensures that you can easily incorporate review feedback. Note ⚡️ Faster reviews with cachingCodeRabbit now supports caching for code and dependencies, helping speed up reviews. This means quicker feedback, reduced wait times, and a smoother review experience overall. Cached data is encrypted and stored securely. This feature will be automatically enabled for all accounts on May 16th. To opt out, configure 📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (2)
⏰ Context from checks skipped due to timeout of 90000ms (4)
🔇 Additional comments (6)
✨ Finishing Touches
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. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
How to use the Graphite Merge QueueAdd either label to this PR to merge it via the merge queue:
You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. |
|
This is a funny one. The crux of the issue is that calling There are a few patterns on how to avoid this
All other uses of goroutine spawning is correct in the codebase. |
Improve concurrent test error handling in blockchain nonce manager and indexer block tracker tests to fix problematic test patterns
Implements proper error propagation and collection in concurrent test scenarios:
TestGetNonce_ConsumeManyConcurrentin nonceManager_test.go to collect and verify goroutine errors through a dedicated error channel instead of using in-goroutine assertionsTestConcurrentUpdatesin block_tracker_test.go to handle concurrent errors via a channel-based collection mechanism and adds early termination on error detection📍Where to Start
Begin with the
TestGetNonce_ConsumeManyConcurrentfunction in nonceManager_test.go as it contains the core pattern being fixed.Macroscope summarized f32de70.
Summary by CodeRabbit