@@ -287,6 +287,11 @@ func (r *Reconciler) createUpgradePlanInternal(apiObject k8sutil.APIObject, spec
287287 return nil , false
288288 }
289289
290+ if m .Member .Conditions .IsTrue (api .ConditionTypeMarkedToRemove ) {
291+ // Server is supposed to be removed, lets not continue
292+ return nil , false
293+ }
294+
290295 if decision .AreGroupsPendingUpgrade (upgradeOrder [:id ]... ) {
291296 // Not all members before were upgraded
292297 return nil , false
@@ -313,20 +318,19 @@ func (r *Reconciler) createUpgradePlanInternal(apiObject k8sutil.APIObject, spec
313318 switch group {
314319 case api .ServerGroupDBServers :
315320 // 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
320322 }
321323 }
322324
325+ compact := um .Get () == api .ServerGroupUpgradeModeOptionalReplace
326+
323327 if d .updateAllowed {
324328 // We are fine, group is alive so we can proceed
325329 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
327331 } else if d .unsafeUpdateAllowed {
328332 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
330334 } else {
331335 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." )
332336 return nil , true
@@ -596,7 +600,7 @@ func (r *Reconciler) createMemberAllowUpgradeConditionPlan(ctx context.Context,
596600// createUpgradeMemberPlan creates a plan to upgrade (stop-recreateWithAutoUpgrade-stop-start) an existing
597601// member.
598602func (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 {
600604 upgradeAction := api .ActionTypeUpgradeMember
601605 if rotateStatefull || group .IsStateless () {
602606 upgradeAction = api .ActionTypeRotateMember
@@ -608,7 +612,7 @@ func (r *Reconciler) createUpgradeMemberPlan(member api.MemberStatus,
608612 Str ("action" , string (upgradeAction )).
609613 Info ("Creating upgrade plan" )
610614
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 )
612616
613617 if member .Image == nil || member .Image .Image != spec .GetImage () {
614618 plan = plan .Before (actions .NewAction (api .ActionTypeSetMemberCurrentImage , group , member , reason ).SetImage (spec .GetImage ()))
0 commit comments