Skip to content

Commit 9893597

Browse files
authored
Merge pull request #140499 from cockroachdb/blathers/backport-release-25.1-140498
release-25.1: server: update `prev()` logic to account for more releases per year
2 parents 6a2a555 + deba6ab commit 9893597

File tree

1 file changed

+58
-2
lines changed

1 file changed

+58
-2
lines changed

pkg/server/version_cluster_test.go

+58-2
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,20 @@ func prev(version roachpb.Version) roachpb.Version {
134134
if version.Minor > 1 {
135135
return roachpb.Version{Major: version.Major, Minor: version.Minor - 1}
136136
}
137-
// Here we assume that there's going to only be 2 releases per year.
138-
// Otherwise we'd need to keep some history of what releases we've had.
137+
138+
// version is the first release of that year, e.g. MM.1
139+
140+
v25_1 := roachpb.Version{Major: 25, Minor: 1}
141+
if v25_1.Equal(version) {
142+
// For 2024, we had 3 releases that year.
143+
return roachpb.Version{Major: 24, Minor: 3}
144+
}
145+
if v25_1.Less(version) {
146+
// 2025 onwards, we had 4 releases per year.
147+
return roachpb.Version{Major: version.Major - 1, Minor: 4}
148+
}
149+
150+
// Prior to 2024, we had 2 releases per year.
139151
return roachpb.Version{Major: version.Major - 1, Minor: 2}
140152
}
141153

@@ -157,6 +169,50 @@ func prev(version roachpb.Version) roachpb.Version {
157169
}
158170
}
159171

172+
func TestPrev(t *testing.T) {
173+
defer leaktest.AfterTest(t)()
174+
defer log.Scope(t).Close(t)
175+
176+
tests := []struct {
177+
this, prev roachpb.Version
178+
}{
179+
// releases 2025+: 4 releases per year.
180+
{
181+
this: roachpb.Version{Major: 28, Minor: 4},
182+
prev: roachpb.Version{Major: 28, Minor: 3},
183+
},
184+
{
185+
this: roachpb.Version{Major: 28, Minor: 1},
186+
prev: roachpb.Version{Major: 27, Minor: 4},
187+
},
188+
{
189+
this: roachpb.Version{Major: 26, Minor: 1},
190+
prev: roachpb.Version{Major: 25, Minor: 4},
191+
},
192+
// releases 2024: 3 releases per year.
193+
{
194+
this: roachpb.Version{Major: 25, Minor: 1},
195+
prev: roachpb.Version{Major: 24, Minor: 3},
196+
},
197+
// releases 2019-2023: Calendar versioning, with 2 releases per year
198+
{
199+
this: roachpb.Version{Major: 24, Minor: 1},
200+
prev: roachpb.Version{Major: 23, Minor: 2},
201+
},
202+
{
203+
this: roachpb.Version{Major: 21, Minor: 1},
204+
prev: roachpb.Version{Major: 20, Minor: 2},
205+
},
206+
}
207+
for _, test := range tests {
208+
t.Run("", func(t *testing.T) {
209+
if p := prev(test.this); p != test.prev {
210+
t.Errorf("expected %s, got %s", test.prev, p)
211+
}
212+
})
213+
}
214+
}
215+
160216
func TestClusterVersionPersistedOnJoin(t *testing.T) {
161217
defer leaktest.AfterTest(t)()
162218
defer log.Scope(t).Close(t)

0 commit comments

Comments
 (0)