Fix bug that scripts may not be loaded correctly in pipeline #1107
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.
Hello, I want to report a bug in the
pipeline.ts
and submit the bug fix as well.Description
In the script checking part:
It will pass a uniqued scripts array (
Array.from(new Set(scripts.map(({ sha }) => sha)))
) intoSCRIPT EXISTS
, this is fine.However it will add the scripts from the original scripts array (
pending.push(scripts[i])
), this could introduce a problem.The bug seems to be introduced since #781.
Example
If I defined 2 custom commands
echo
andtest
, and do:Then the
scripts
will contain["echo", "echo", "test"]
, but the uniqued scripts array is["echo", "test"]
.The inconsistencies between the two arrays will make
echo
script will be loaded twice buttest
script not loading into Redis.Fix
Please review my PR for the fix. I have moved the uniqueness check when adding the scripts.
Now there's only one
scripts
array and there should be no more inconsistency issue.I have also updated the unit test to cover this case.