Skip to content

Commit deba6ab

Browse files
committed
server: update prev logic to account for more releases per year
Before 2024, we shipped 2 releases a year. In 2024, we shipped 3 releases. And 2025 onwards, we will be shipping 4 releases a year. This PR adjusts prev() to account for the above shift to more releases per year. Release note: None Epic: REL-1751 Release justification: test-only fix, to unblock release-process.
1 parent 9af8fe2 commit deba6ab

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)