Repository navigation
Conversation
PR SummaryMedium Risk Overview The internal test constructor gains an optional Adds Reviewed by Cursor Bugbot for commit 1053891. Bugbot is set up for automated code reviews on this repo. Configure here. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Superseded by #450, opened concurrently for the same issue 16 seconds before this PR. Both implement the same ownership seam and unsubscribe-after-dispose fix; #450 retains the active review and CI. Closing this duplicate to keep one authored PR open.
What does this change?
IsoTpChannel.Disposenow keeps its background-exception handler attached until its owned actor has finished disposing. A callback that outlives the actor's shutdown timeout therefore reaches channel subscribers through the existing asynchronous dispatcher. Borrowed actors remain owned by their callers and the channel still detaches its handler.Closes #449. No public API change; the internal test constructor can explicitly take ownership of an injected actor.
Type of change
feat— new behaviour (minor release)fix/perf— bug or performance fix (patch release)docs/test/refactor/chore/ci— no releaseChecklist
-p:CI=true, test (net10.0),dotnet format --verify-no-changes, and pack +eng/verify-packages.pyall pass locallyValidation
IsoTpChannelIntegrationTests.The_Shutdown_Timeout_Of_The_Channels_Own_Actor_Reaches_Its_Subscribersholds the actor callback untilfinallyand awaits the dispatched timeout report. Restoring the old unsubscribe-before-dispose ordering makes this test fail with a timeout; restoring the fix passes.