Skip to content

Commit 73f5b70

Browse files
committed
Limit multi node upgrade journey pipeline to only 3 last minor versions
1 parent 7111b86 commit 73f5b70

File tree

4 files changed

+46
-11
lines changed

4 files changed

+46
-11
lines changed

apps/upgrade-journey/containers.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ func (c *cluster) startWeaviateNode(ctx context.Context, nodeId int, version str
124124
"CLUSTER_JOIN": fmt.Sprintf("%s:7100", c.hostname(0)),
125125
"RAFT_JOIN": c.hostname(0),
126126
"RAFT_BOOTSTRAP_EXPECT": "1",
127+
"RAFT_BOOTSTRAP_TIMEOUT": "300",
127128
"PERSISTENCE_LSM_ACCESS_STRATEGY": os.Getenv("PERSISTENCE_LSM_ACCESS_STRATEGY"),
128129
},
129130
Mounts: testcontainers.Mounts(testcontainers.BindMount(
@@ -167,7 +168,7 @@ func (c *cluster) getStartupTimeout() time.Duration {
167168
// For multi-node clusters, increase timeout based on node count
168169
// Each additional node adds 30 seconds to account for cluster joining time
169170
if c.nodeCount > 1 {
170-
return baseTimeout + time.Duration(c.nodeCount)*30*time.Second
171+
return baseTimeout + time.Duration(c.nodeCount)*60*time.Second
171172
}
172173

173174
return baseTimeout

apps/upgrade-journey/run.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ func main() {
4747
log.Fatal(err)
4848
}
4949

50-
versions, err = buildVersionList(ctx, minimumW, targetW)
50+
versions, err = buildVersionList(ctx, minimumW, targetW, numNodes > 1)
5151
if err != nil {
5252
log.Fatal(err)
5353
}

apps/upgrade-journey/versions.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import (
1818
"github.com/weaviate/weaviate-go-client/v5/weaviate"
1919
)
2020

21-
func buildVersionList(ctx context.Context, min, target string) ([]string, error) {
21+
func buildVersionList(ctx context.Context, min, target string, isMultiNode bool) ([]string, error) {
2222
ghReleases, err := retrieveVersionListFromGH()
2323
if err != nil {
2424
return nil, err
@@ -30,7 +30,7 @@ func buildVersionList(ctx context.Context, min, target string) ([]string, error)
3030
}
3131

3232
versions := parseSemverList(ghReleases)
33-
versions = sortSemverAndTrimToMinimum(versions, min, max)
33+
versions = sortSemverAndTrimToMinimum(versions, min, max, isMultiNode)
3434
list := versions.toStringList()
3535

3636
return append(list, target), nil
@@ -117,14 +117,20 @@ func (self semver) patch() int64 {
117117
return self.version.Segments64()[2]
118118
}
119119

120-
func sortSemverAndTrimToMinimum(versions semverList, min, max string) semverList {
120+
func sortSemverAndTrimToMinimum(versions semverList, min, max string, isMultiNode bool) semverList {
121121
sort.Slice(versions, func(a, b int) bool {
122122
return versions[a].version.LessThan(versions[b].version)
123123
})
124124

125125
minV := parseSingleSemverWithoutLeadingV(min)
126126
maxV := parseSingleSemverWithoutLeadingV(max)
127127

128+
if isMultiNode {
129+
// limit to only 3 last minor versions
130+
newMin := fmt.Sprintf("%v.%v.0", maxV.major(), maxV.minor()-3)
131+
minV = parseSingleSemverWithoutLeadingV(newMin)
132+
}
133+
128134
out := make(semverList, len(versions))
129135

130136
i := 0

apps/upgrade-journey/versions_test.go

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,12 @@ func Test_sortSemverAndTrimToMinimum(t *testing.T) {
2121
}
2222
versions := parseSemverList(ghReleases)
2323
tests := []struct {
24-
name string
25-
versions semverList
26-
min string
27-
max string
28-
want []string
24+
name string
25+
versions semverList
26+
min string
27+
max string
28+
isMultiNode bool
29+
want []string
2930
}{
3031
{
3132
name: "from 1.22.7 to 1.22.9",
@@ -44,10 +45,37 @@ func Test_sortSemverAndTrimToMinimum(t *testing.T) {
4445
"1.21.6", "1.21.7", "1.21.8", "1.21.9", "1.22.0", "1.22.1", "1.22.2", "1.22.3", "1.22.4", "1.22.5", "1.22.6", "1.22.7", "1.22.8",
4546
},
4647
},
48+
{
49+
name: "only last 3 minor versions",
50+
versions: versions,
51+
min: "1.7.2",
52+
max: "1.23.0",
53+
isMultiNode: true,
54+
want: []string{
55+
"1.20.0", "1.20.1", "1.20.2", "1.20.3", "1.20.4", "1.20.5", "1.20.6", "1.21.0", "1.21.1", "1.21.2", "1.21.3", "1.21.4", "1.21.5",
56+
"1.21.6", "1.21.7", "1.21.8", "1.21.9", "1.22.0", "1.22.1", "1.22.2", "1.22.3", "1.22.4", "1.22.5", "1.22.6", "1.22.7", "1.22.8",
57+
},
58+
},
59+
{
60+
name: "all versions",
61+
versions: versions,
62+
min: "1.7.2",
63+
max: "1.23.0",
64+
isMultiNode: false,
65+
want: []string{
66+
"1.7.2", "1.8.0", "1.9.0", "1.9.1", "1.10.0", "1.10.1", "1.11.0", "1.12.0", "1.12.1", "1.12.2", "1.13.0", "1.13.1", "1.13.2",
67+
"1.14.0", "1.14.1", "1.15.0", "1.15.1", "1.15.2", "1.15.3", "1.15.4", "1.15.5", "1.16.0", "1.16.1", "1.16.2", "1.16.3",
68+
"1.16.4", "1.16.5", "1.16.6", "1.16.7", "1.16.8", "1.16.9", "1.17.0", "1.17.1", "1.17.2", "1.17.3", "1.17.4", "1.17.5",
69+
"1.17.6", "1.18.0", "1.18.1", "1.18.2", "1.18.3", "1.18.4", "1.18.5", "1.18.6", "1.19.0", "1.19.1", "1.19.2", "1.19.3", "1.19.4",
70+
"1.19.5", "1.19.6", "1.19.7", "1.19.8", "1.19.9", "1.19.10", "1.19.11", "1.19.12", "1.19.13", "1.20.0", "1.20.1", "1.20.2",
71+
"1.20.3", "1.20.4", "1.20.5", "1.20.6", "1.21.0", "1.21.1", "1.21.2", "1.21.3", "1.21.4", "1.21.5", "1.21.6", "1.21.7",
72+
"1.21.8", "1.21.9", "1.22.0", "1.22.1", "1.22.2", "1.22.3", "1.22.4", "1.22.5", "1.22.6", "1.22.7", "1.22.8",
73+
},
74+
},
4775
}
4876
for _, tt := range tests {
4977
t.Run(tt.name, func(t *testing.T) {
50-
if got := sortSemverAndTrimToMinimum(tt.versions, tt.min, tt.max); !reflect.DeepEqual(got.toStringList(), tt.want) {
78+
if got := sortSemverAndTrimToMinimum(tt.versions, tt.min, tt.max, tt.isMultiNode); !reflect.DeepEqual(got.toStringList(), tt.want) {
5179
t.Errorf("sortSemverAndTrimToMinimum() = %v, want %v", got.toStringList(), tt.want)
5280
}
5381
})

0 commit comments

Comments
 (0)