chore(deps): bump bullmq, ioredis and eslint to their next majors - #26
Merged
Conversation
Lands PRs #9, #12, #13 and #14 as one change, because they cannot land separately: @eslint/js@10 requires eslint@^10, so each Dependabot PR bumping one half of the pair fails to resolve against the other. eslint-plugin-import is replaced by eslint-plugin-import-x. The former stopped at eslint ^9 -- 2.32.0 is its latest release and it does not support 10 -- so it was the real blocker behind both eslint PRs. The maintained fork accepts ^10 and provides the same rules under the import-x/ prefix. ESLint 10's recommended set adds preserve-caught-error, which found two places rethrowing without attaching the original error. Fixed rather than disabled. Adds test/keda-scaledobject.spec.ts. The KEDA ScaledObject reads the BullMQ backlog at bull:<queue>:wait, a coupling invisible to TypeScript: a queue rename or a BullMQ key-layout change would leave KEDA reporting Ready=True while never scaling. Verified empirically against BullMQ 6.0.9 that the layout is unchanged; the test now guards it. Closes #9, closes #12, closes #13, closes #14
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
The KEDA trigger reads BullMQ's Redis keys directly, so a queue-library bump can break autoscaling without touching anything under k8s/.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Supersedes #9, #12, #13 and #14 by landing them together.
Why one PR instead of four
The two ESLint PRs could never have passed on their own.
@eslint/js@10requireseslint@^10, so #14 (bumping@eslint/js) and #9 (bumpingeslint) each fail to resolve against the other half still pinned at 9. That is exactly what the 2 red checks on each were.BullMQ and ioredis are the same stack — BullMQ runs on ioredis. Merging them separately would produce a combination nobody tested.
The real blocker behind the ESLint upgrade
eslint-plugin-import@2.32.0is its latest release and its peer range stops at^9. It does not support ESLint 10 and there is no newer version. Replaced witheslint-plugin-import-x@4.17.1, the maintained fork, which accepts^10and exposes the same rules under theimport-x/prefix. All five rules in use were migrated;no-extraneous-dependencies— the one that keeps an undeclared import from crashing the production image — is unchanged in behaviour.What ESLint 10 caught
Its recommended set adds
preserve-caught-error, which found two scripts rethrowing without attaching the original error. Fixed with{ cause: error }, not disabled — the rule was right.The KEDA coupling, now guarded
k8s/keda/scaledobject.yamlreads the BullMQ backlog directly atbull:<queue>:wait. That coupling is invisible to TypeScript: a queue rename, or a BullMQ upgrade that changed its key layout, would leave KEDA reportingReady=Trueand silently never scaling.Verified empirically against BullMQ 6.0.9 — enqueuing two jobs on
fetch-feedproducesbull:fetch-feed:waitwithLLEN 2, so the layout is unchanged.test/keda-scaledobject.spec.tsnow asserts it, along with the Redis FQDN that the KEDA operator needs from its own namespace.Verified locally
lintclean,typecheckclean,buildcleanformat:checkcleanNote:
package-lock.jsonis regenerated. npm could not resolve the ESLint pair incrementally against the existing tree.Closes #9, closes #12, closes #13, closes #14