@@ -265,16 +265,19 @@ func (m *upgradeManager) StartDatabaseUpgrade(ctx context.Context) error {
265
265
// Fetch mode
266
266
config , myPeer , mode := m .upgradeManagerContext .ClusterConfig ()
267
267
268
- if ! mode .HasAgency () {
269
- // Run upgrade without agency
270
- go m .runSingleServerUpgradeProcess (ctx , myPeer , mode )
268
+ if mode .IsSingleMode () {
269
+ // Run upgrade without agency (i.e., SingleServer)
270
+
271
+ // Create a new context to be independent of ctx
272
+ timeoutContext , _ := context .WithTimeout (context .Background (), time .Minute * 5 )
273
+ go m .runSingleServerUpgradeProcess (timeoutContext , myPeer , mode )
271
274
return nil
272
275
}
273
276
274
277
// Check cluster health
275
278
if mode .IsClusterMode () {
276
279
if err := m .isClusterHealthy (ctx ); err != nil {
277
- return maskAny (errors .Wrap (err , "Found unhealthy cluster" ))
280
+ return maskAny (errors .Wrap (err , "Cannot upgrade unhealthy cluster" ))
278
281
}
279
282
}
280
283
@@ -356,7 +359,7 @@ func (m *upgradeManager) StartDatabaseUpgrade(ctx context.Context) error {
356
359
}
357
360
}
358
361
359
- m .log .Info ().Msg ("Applied special update procedure for 3.4.6" )
362
+ m .log .Info ().Msg ("Applied special upgrade procedure for 3.4.6" )
360
363
}
361
364
362
365
// Create upgrade plan
@@ -1163,31 +1166,33 @@ func (m *upgradeManager) finishUpgradePlan(ctx context.Context, plan UpgradePlan
1163
1166
1164
1167
// runSingleServerUpgradeProcess runs the entire upgrade process of a single server until it is finished.
1165
1168
func (m * upgradeManager ) runSingleServerUpgradeProcess (ctx context.Context , myPeer * Peer , mode ServiceMode ) {
1166
- // Unlock when we're done
1169
+ // Cleanup when we're done
1167
1170
defer func () {
1168
1171
m .upgradeServerType = ""
1169
1172
m .updateNeeded = false
1170
1173
}()
1171
1174
1172
- if mode .IsSingleMode () {
1173
- // Restart the single server in auto-upgrade mode
1174
- m .log .Info ().Msg ("Upgrading single server" )
1175
- m .upgradeServerType = ServerTypeSingle
1176
- m .updateNeeded = true
1177
- if err := m .upgradeManagerContext .RestartServer (ServerTypeSingle ); err != nil {
1178
- m .log .Error ().Err (err ).Msg ("Failed to restart single server" )
1179
- return
1180
- }
1175
+ if ! mode .IsSingleMode () {
1176
+ m .log .Info ().Msg ("Not in Single Server Mode, aborting." )
1177
+ return
1178
+ }
1179
+ // Restart the single server in auto-upgrade mode
1180
+ m .log .Info ().Msg ("Upgrading single server" )
1181
+ m .upgradeServerType = ServerTypeSingle
1182
+ m .updateNeeded = true
1183
+ if err := m .upgradeManagerContext .RestartServer (ServerTypeSingle ); err != nil {
1184
+ m .log .Error ().Err (err ).Msg ("Failed to restart single server" )
1185
+ return
1186
+ }
1181
1187
1182
- // Wait until single server restarted
1183
- if err := m .waitUntilUpgradeServerStarted (ctx ); err != nil {
1184
- return
1185
- }
1188
+ // Wait until single server restarted
1189
+ if err := m .waitUntilUpgradeServerStarted (ctx ); err != nil {
1190
+ return
1191
+ }
1186
1192
1187
- // Wait until all single servers respond
1188
- if err := m .waitUntil (ctx , m .areSingleServersResponding , "Single server is not yet responding: %v" ); err != nil {
1189
- return
1190
- }
1193
+ // Wait until all single servers respond
1194
+ if err := m .waitUntil (ctx , m .areSingleServersResponding , "Single server is not yet responding: %v" ); err != nil {
1195
+ return
1191
1196
}
1192
1197
1193
1198
// We're done
0 commit comments