refactor(scheduler): remove invalidateJob #11650
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.
Closes #7745.
I have an old PR, #7745, that fixes a minor bug in
invalidateJob
. However, since Vue 3.4, the external symptoms of the bug disappeared. The problem in the code is still present, but it can no longer be reproduced via the public API.Longer explanation at #7745 (comment).
In short, I believe we no longer need to use
invalidateJob
to remove child jobs from the queue. We can just leave the job in the queue. Since 3.4, update jobs check theirdirty
flag before doing anything else, so running an unnecessary job is very cheap.Removing the job involves calls to
indexOf
andsplice
, neither of which are cheap operations. Using a flag instead is similar to the approach used byinvalidateMount
(see #9370 (comment)).The test for
invalidateJob
had to be removed too. I've added a couple of new tests to try to cover some of the relevant edge cases, but testing via the public API.