ci: make the redis:latest matrix legs advisory - #733
Draft
vishal-bala wants to merge 2 commits into
Draft
Conversation
`redis:latest` is a floating tag, so a third of the test matrix ran against an image whose contents change with no commit to this repository. A failure on those legs could not be reproduced from a SHA, which makes `git bisect` over CI results meaningless, and it blocked merges on server-side changes nobody here had made. It has already cost us twice: the Redis 8.8 RediSearch worker default that opened an FT.SEARCH nil-field race, pinned away with `--search-workers 0` in tests/docker-compose.yml, and the Redis 8.10 FT.CURSOR abort in the aggregate-cursor path under bulk-op load, which has no client-side workaround. Keep the leg, because early warning of a server regression is worth having, but mark it advisory so it informs without gating. Blocking coverage now comes from the pinned tags only. The matrix still expands to 45 jobs. The `include` entry matches the existing `redis-image` value rather than introducing a new combination, so it adds `experimental: true` to the 15 `redis:latest` legs and leaves the 30 pinned legs blocking. If blocking coverage of a newer server is wanted, add a concrete pinned tag as a fourth value; that is a coverage decision rather than part of this fix.
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.
Motivation
A third of the test matrix ran against
redis:latest, a floating tag whose contents change with no commit to this repository. A failure on those legs could not be reproduced from a SHA, which makes bisecting over CI results meaningless, and it gated merges on server-side changes nobody here had made.The tag has already cost this project twice. Redis 8.8 changed the RediSearch worker default and opened an
FT.SEARCHnil-field race, pinned away with--search-workers 0intests/docker-compose.yml. Redis 8.10 aborts in the aggregate-cursor path under bulk-op load, for which no client-side workaround exists.Changes
The
redis:latestlegs become advisory rather than blocking. A matrixincludeentry tags them withexperimental: true, and the job reads that flag throughcontinue-on-error. The leg still runs, so a server regression still surfaces early, but it no longer gates a merge. Blocking coverage now comes from the pinned tags alone.The
includeentry matches an existingredis-imagevalue, so it adds a key to the combinations that already exist rather than creating new ones. Parsing the workflow confirms the expansion is unchanged at 45 jobs: 15 advisory and 30 blocking.Notes
Blocking coverage of a newer server would need a concrete pinned tag added as a fourth matrix value. That is a coverage decision rather than part of this fix, so it is deliberately left out.