@@ -287,6 +287,11 @@ func (r *Reconciler) createUpgradePlanInternal(apiObject k8sutil.APIObject, spec
287
287
return nil , false
288
288
}
289
289
290
+ if m .Member .Conditions .IsTrue (api .ConditionTypeMarkedToRemove ) {
291
+ // Server is supposed to be removed, lets not continue
292
+ return nil , false
293
+ }
294
+
290
295
if decision .AreGroupsPendingUpgrade (upgradeOrder [:id ]... ) {
291
296
// Not all members before were upgraded
292
297
return nil , false
@@ -313,20 +318,19 @@ func (r *Reconciler) createUpgradePlanInternal(apiObject k8sutil.APIObject, spec
313
318
switch group {
314
319
case api .ServerGroupDBServers :
315
320
// Members are supposed to be replaced
316
- if ! m .Member .Conditions .IsTrue (api .ConditionTypeMarkedToRemove ) {
317
- return api.Plan {actions .NewAction (api .ActionTypeMarkToRemoveMember , m .Group , m .Member , "Replace by Upgrade" )}, false
318
- }
319
- return nil , false
321
+ return api.Plan {actions .NewAction (api .ActionTypeMarkToRemoveMember , m .Group , m .Member , "Replace by Upgrade" )}, false
320
322
}
321
323
}
322
324
325
+ compact := um .Get () == api .ServerGroupUpgradeModeOptionalReplace
326
+
323
327
if d .updateAllowed {
324
328
// We are fine, group is alive so we can proceed
325
329
r .planLogger .Str ("member" , m .Member .ID ).Str ("Reason" , d .updateMessage ).Info ("Upgrade allowed" )
326
- return r .createUpgradeMemberPlan (m .Member , m .Group , "Version upgrade" , spec , status , ! d .upgradeDecision .AutoUpgradeNeeded , agencyCache ), false
330
+ return r .createUpgradeMemberPlan (m .Member , m .Group , "Version upgrade" , spec , status , ! d .upgradeDecision .AutoUpgradeNeeded , compact , agencyCache ), false
327
331
} else if d .unsafeUpdateAllowed {
328
332
r .planLogger .Str ("member" , m .Member .ID ).Str ("Reason" , d .updateMessage ).Info ("Pod needs upgrade but cluster is not ready. Either some shards are not in sync or some member is not ready, but unsafe upgrade is allowed" )
329
- return r .createUpgradeMemberPlan (m .Member , m .Group , "Version upgrade" , spec , status , ! d .upgradeDecision .AutoUpgradeNeeded , agencyCache ), false
333
+ return r .createUpgradeMemberPlan (m .Member , m .Group , "Version upgrade" , spec , status , ! d .upgradeDecision .AutoUpgradeNeeded , compact , agencyCache ), false
330
334
} else {
331
335
r .planLogger .Str ("member" , m .Member .ID ).Str ("Reason" , d .updateMessage ).Info ("Pod needs upgrade but cluster is not ready. Either some shards are not in sync or some member is not ready." )
332
336
return nil , true
@@ -596,7 +600,7 @@ func (r *Reconciler) createMemberAllowUpgradeConditionPlan(ctx context.Context,
596
600
// createUpgradeMemberPlan creates a plan to upgrade (stop-recreateWithAutoUpgrade-stop-start) an existing
597
601
// member.
598
602
func (r * Reconciler ) createUpgradeMemberPlan (member api.MemberStatus ,
599
- group api.ServerGroup , reason string , spec api.DeploymentSpec , status api.DeploymentStatus , rotateStatefull bool , agencyCache state.State ) api.Plan {
603
+ group api.ServerGroup , reason string , spec api.DeploymentSpec , status api.DeploymentStatus , rotateStatefull , compact bool , agencyCache state.State ) api.Plan {
600
604
upgradeAction := api .ActionTypeUpgradeMember
601
605
if rotateStatefull || group .IsStateless () {
602
606
upgradeAction = api .ActionTypeRotateMember
@@ -608,7 +612,7 @@ func (r *Reconciler) createUpgradeMemberPlan(member api.MemberStatus,
608
612
Str ("action" , string (upgradeAction )).
609
613
Info ("Creating upgrade plan" )
610
614
611
- plan := createRotateMemberPlanWithAction (member , group , upgradeAction , spec , reason , util .CheckConditionalP1Nil (agencyCache .GetRebootID , state .Server (member .ID )))
615
+ plan := createRotateMemberPlanWithAction (member , group , upgradeAction , spec , reason , util .CheckConditionalP1Nil (agencyCache .GetRebootID , state .Server (member .ID )), compact )
612
616
613
617
if member .Image == nil || member .Image .Image != spec .GetImage () {
614
618
plan = plan .Before (actions .NewAction (api .ActionTypeSetMemberCurrentImage , group , member , reason ).SetImage (spec .GetImage ()))
0 commit comments