Harden channel select concurrency#9
Conversation
|
@coderabbitai[bot] review |
|
Important Review skippedNo new commits to review since the last review. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughThe runtime now stores channel-select values and round-robin cursors per thread, initializes shared wakeup synchronization once, and adds deterministic integer, string, and struct channel-select stress coverage with fixed-seed TSan replay documentation. ChangesChannel select stress
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant StressTest
participant Producers
participant Selectors
participant Channels
StressTest->>Producers: start deterministic seeded producers
Producers->>Channels: send values and close selected channels
Selectors->>Channels: perform timed select receives
Channels-->>StressTest: return received values for uniqueness and statistics checks
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
|
✅ Action performedReview finished.
|
|
@coderabbitai review |
✅ Action performedReview finished.
|
Concurrent channel selectors shared result and round-robin state, allowing tasks to race and read another selector's value.
Verified with
cargo test --bin makoand the fixed TSan stress seeds.Summary by CodeRabbit
Bug Fixes
Tests
Documentation