Skip to content

Commit 27c7245

Browse files
committed
Avoid terminating delete on errors.
When there is an error happening upon deletion of the Kubernetes object belonging to the cluster being removed, it makes no sense to abort the deletion: the manifest will be removed anyway, therefore all the objects after the one we aborted at will stay forever.
1 parent 88d6a7b commit 27c7245

File tree

2 files changed

+9
-13
lines changed

2 files changed

+9
-13
lines changed

pkg/cluster/cluster.go

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -628,44 +628,42 @@ func (c *Cluster) Update(oldSpec, newSpec *spec.Postgresql) error {
628628
// DCS, reuses the master's endpoint to store the leader related metadata. If we remove the endpoint
629629
// before the pods, it will be re-created by the current master pod and will remain, obstructing the
630630
// creation of the new cluster with the same name. Therefore, the endpoints should be deleted last.
631-
func (c *Cluster) Delete() error {
631+
func (c *Cluster) Delete() {
632632
c.mu.Lock()
633633
defer c.mu.Unlock()
634634

635635
if err := c.deleteStatefulSet(); err != nil {
636-
return fmt.Errorf("could not delete statefulset: %v", err)
636+
c.logger.Warningf("could not delete statefulset: %v", err)
637637
}
638638

639639
for _, obj := range c.Secrets {
640640
if delete, user := c.shouldDeleteSecret(obj); !delete {
641-
c.logger.Infof("not removing secret %q for the system user %q", obj.GetName(), user)
641+
c.logger.Warningf("not removing secret %q for the system user %q", obj.GetName(), user)
642642
continue
643643
}
644644
if err := c.deleteSecret(obj); err != nil {
645-
return fmt.Errorf("could not delete secret: %v", err)
645+
c.logger.Warningf("could not delete secret: %v", err)
646646
}
647647
}
648648

649649
if err := c.deletePodDisruptionBudget(); err != nil {
650-
return fmt.Errorf("could not delete pod disruption budget: %v", err)
650+
c.logger.Warningf("could not delete pod disruption budget: %v", err)
651651
}
652652

653653
for _, role := range []PostgresRole{Master, Replica} {
654654

655655
if err := c.deleteEndpoint(role); err != nil {
656-
return fmt.Errorf("could not delete %s endpoint: %v", role, err)
656+
c.logger.Warningf("could not delete %s endpoint: %v", role, err)
657657
}
658658

659659
if err := c.deleteService(role); err != nil {
660-
return fmt.Errorf("could not delete %s service: %v", role, err)
660+
c.logger.Warningf("could not delete %s service: %v", role, err)
661661
}
662662
}
663663

664664
if err := c.deletePatroniClusterObjects(); err != nil {
665-
return fmt.Errorf("could not remove leftover patroni objects; %v", err)
665+
c.logger.Warningf("could not remove leftover patroni objects; %v", err)
666666
}
667-
668-
return nil
669667
}
670668

671669
// ReceivePodEvent is called back by the controller in order to add the cluster's pod event to the queue.

pkg/controller/postgresql.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,7 @@ func (c *Controller) processEvent(event spec.ClusterEvent) {
230230
teamName := strings.ToLower(cl.Spec.TeamID)
231231

232232
c.curWorkerCluster.Store(event.WorkerID, cl)
233-
if err := cl.Delete(); err != nil {
234-
lg.Errorf("could not delete cluster: %v", err)
235-
}
233+
cl.Delete()
236234

237235
func() {
238236
defer c.clustersMu.Unlock()

0 commit comments

Comments
 (0)