Repository navigation
[Execution] Release the child tasks dropped by a non-null violation - #138
Open
michaelstaib wants to merge 2 commits into
Open
michaelstaib wants to merge 2 commits into
michaelstaib wants to merge 2 commits into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When a non-null violation nulls a field,
ResolverTaskcleared its child task buffer andBatchResolverTaskremoved the failing entry's children. Those child tasks were already counted against the operation context, so they were never released. The deferred branch then waited for them forever, and the request context was discarded by the pool guard instead of being reused.Both drop sites now return each dropped child task through the regular release path (
ResolverTaskFactory.ReleaseUnregisteredTasks). A dropped resolver task goes back to its pool, which releases its operation context. A dropped defer task is reset, which disposes its defer context.Tests in
DeferDroppedChildTaskTestscover the resolver and batch variants. They assert the completed entry's error and that every context returns to its pool. Before the fix they time out.The change runs only when a non-null violation drops child tasks. No benchmark was run.