fix: Fix infinite loop when running Pipeline #8123
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.
Related Issues
Proposed Changes:
This changes a bit the internal run logic in two ways:
Components that have variadic input and not greedy will be put in the
waiting_queue
when outputs are distributed, previously they would have been put in therun_queue
. This will prevent them from running before they're supposed to.It also changes which Components we remove from the
run_queue
andwaiting_queue
when a Component produces only parts of its output, like theConditionalRouter
. Now we remove from the queues Components that directly would have received that output, but also their descendants. This prevents the Pipeline to get stuck in a loop waiting for inputs for Components that will never receive it.How did you test it?
I added a new Pipeline in the behavioural tests similar to the one reported in the above issue and updated another test.
Notes for the reviewer
N/A
Checklist
fix:
,feat:
,build:
,chore:
,ci:
,docs:
,style:
,refactor:
,perf:
,test:
.