-
Notifications
You must be signed in to change notification settings - Fork 4k
mixedversion: remove special case for skipping current version #157852
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
d746a8b to
5b2ff6a
Compare
Potential Bug(s) DetectedThe three-stage Claude Code analysis has identified potential bug(s) in this PR that may warrant investigation. Next Steps: Note: When viewing the workflow output, scroll to the bottom to find the Final Analysis Summary. After you review the findings, please tag the issue as follows:
|
6521a1f to
96bd161
Compare
|
Does the |
96bd161 to
33f9904
Compare
|
Done, although that probably could've been removed a long time ago since |
In the past, we used to bump CRDB's minSupportedVersion _before_ bumping CRDB's current version. Consider the old version bump process: 1. Bump minimum supported version (e.g. 25.2→25.3) 2. Bump current version (e.g. 25.4→26.1) 3. Bump minimum supported version again (e.g. 25.3→25.4) After the first step, we would be in a state where the mixed version framework would see v25.3 as a skippable version (.1 and .3 ordinal versions are skippable), but since the minimum supported version is 25.3, 25.2→25.4 is (temporarily) not a legal upgrade. This required a special case to disallow skip upgrades in the case of this edge case. However, we now bump the current version _first_. This means we no longer need to protect against the above and we actually hit a different bug. Since we now bump the current version first, the special case will always view the current version as having multiple supported predecessors and force a skip upgrade even if not applicable.
33f9904 to
d88aca2
Compare
williamchoe3
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Saw the thread in #test-eng too, changes make sense, skimmed the surrounding logic to understand the edge case, lgtm. This type of thing seems to be a consequence of the messy release support strategy / versioning of innovation and non innovation releases
|
TFTR bors r=williamchoe3 |
157784: tree: speed up two tests r=yuzefovich a=yuzefovich We just saw a package-level test timeout of 1 minute being hit because `TestRandomInjectHints` took 29s and `TestParseArrayRandomParseArray` took 16s before interruption. This commit reduces the number of iterations by 5x and 10x, respectively. Fixes: #157256. Release note: None 157852: mixedversion: remove special case for skipping current version r=williamchoe3 a=DarrylWong In the past, we used to bump CRDB's minSupportedVersion _before_ bumping CRDB's current version. Consider the old version bump process: 1. Bump minimum supported version (e.g. 25.2→25.3) 2. Bump current version (e.g. 25.4→26.1) 3. Bump minimum supported version again (e.g. 25.3→25.4) After the first step, we would be in a state where the mixed version framework would see v25.3 as a skippable version (.1 and .3 ordinal versions are skippable), but since the minimum supported version is 25.3, 25.2→25.4 is (temporarily) not a legal upgrade. This required a special case to disallow skip upgrades in the case of this edge case. However, we now bump the current version _first_. This means we no longer need to protect against the above and we actually hit a different bug. Since we now bump the current version first, the special case will always view the current version as having multiple supported predecessors and force a skip upgrade even if not applicable. Release note: none Epic: none 157919: roachprod: fix service registry unit test name collision r=golgeek a=DarrylWong We were previously generating cluster names with Uint32, which is not sufficient enough to prevent naming collisions after 1000 iterations. Instead, use a RandString of length 10. Fixes: #157884 Release note: none 157920: storage,server: add debug separated value retrieval profile endpoint r=RaduBerinde a=jbowens Add a new debug endpoint that returns a text-formatted representation of all the stack traces that performed a retrieval of a separated value while the profile was being collected. This provides better observability into what code paths are suffering more expensive value retrievals. Epic: none Informs: #146575 Release note: none Co-authored-by: Yahor Yuzefovich <[email protected]> Co-authored-by: DarrylWong <[email protected]> Co-authored-by: Jackson Owens <[email protected]>
|
Build failed (retrying...): |
| // test correct when we bump the minimum supported version separately from | ||
| // the current version. | ||
| r := clusterversion.Latest.ReleaseSeries() | ||
| currentMajor := version.MajorVersion{Year: int(r.Major), Ordinal: int(r.Minor)} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The fact that Test_UpgradePaths didn't fail suggests it's weakly specified. I think we should strengthen it by asserting the "ordinal invariant", i.e., no skips from even.
In the past, we used to bump CRDB's minSupportedVersion before bumping CRDB's current version.
Consider the old version bump process:
After the first step, we would be in a state where the mixed version framework would see v25.3 as a skippable version (.1 and .3 ordinal versions are skippable), but since the minimum supported version is 25.3, 25.2→25.4 is (temporarily) not a legal upgrade.
This required a special case to disallow skip upgrades in the case of this edge case. However, we now bump the current version first. This means we no longer need to protect against the above and we actually hit a different bug.
Since we now bump the current version first, the special case will always view the current version as having multiple supported predecessors and force a skip upgrade even if not applicable.
Release note: none
Epic: none