Fix concurrent workers register duplicate task execution for nextstep #787
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.
Pull Request description
Description of the change
What I did
Before registering a new task execution, a worker checks if the task execution has already been registered for the given step (at _yorc/tasks//.registeredExecutions/) When deleting the ".runningExecutions" in notifyEnd(), also delete the ".registeredExecution".
Note: If the step status is DONE, ERROR, or CANCELED, we still register a task execution. This is the case where we resume a workflow. The task executions are registered again. But they will be bypass if the given task status step is DONE.
How I did it
How to verify it
See Unitest. It simulates two workers register the same next step but only one task execution is registered.
Description for the changelog
Fix concurrent workers register duplicate task execution for nextstep.
Applicable Issues