fix(core): fix race condition in task scheduler #17837
Merged
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.
Current Behavior
When tasks are run in parallel, the task orchestrator uses several threads to run them. As tasks complete their execution, the tasks orchestrator requests the task scheduler to schedule the tasks or batches of tasks to run. Since scheduling tasks is an async operation and it's invoked in multiple threads, a race condition can occur scheduling the same tasks multiple times.
Example of a run where this happened: https://staging.nx.app/runs/rfOvLS2DkD
Expected Behavior
The task scheduler should handle scheduling requests in a thread-safe manner. Scheduling requests are chained to ensure they are executed sequentially and the state is stable for each execution.
Related Issue(s)
Fixes #