Skip to content

Commit

Permalink
feat(controller): Add retry on conflict wrapper around update and cre…
Browse files Browse the repository at this point in the history
…ate ops

Signed-off-by: Michael Riesberg-Timmer <MichaelRT@pallid.dev>
  • Loading branch information
michohl committed Aug 7, 2024
1 parent 896034a commit 6a69c00
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/util/retry"
)

const (
Expand Down Expand Up @@ -222,7 +223,10 @@ func (n *PDBController) reconcilePDBs(ctx context.Context, desiredPDBs, managedP
managedPDB.Labels = desiredPDB.Labels
managedPDB.Spec = desiredPDB.Spec

_, err := n.PolicyV1().PodDisruptionBudgets(managedPDB.Namespace).Update(ctx, &managedPDB, metav1.UpdateOptions{})
err := retry.RetryOnConflict(retry.DefaultRetry, func() error {
_, err := n.PolicyV1().PodDisruptionBudgets(managedPDB.Namespace).Update(ctx, &managedPDB, metav1.UpdateOptions{})
return err
})
if err != nil {
log.Errorf("Failed to update PDB: %v", err)
continue
Expand All @@ -239,7 +243,10 @@ func (n *PDBController) reconcilePDBs(ctx context.Context, desiredPDBs, managedP

for key, desiredPDB := range desiredPDBs {
if _, ok := managedPDBs[key]; !ok {
_, err := n.PolicyV1().PodDisruptionBudgets(desiredPDB.Namespace).Create(ctx, &desiredPDB, metav1.CreateOptions{})
err := retry.RetryOnConflict(retry.DefaultRetry, func() error {
_, err := n.PolicyV1().PodDisruptionBudgets(desiredPDB.Namespace).Create(ctx, &desiredPDB, metav1.CreateOptions{})
return err
})
if err != nil {
log.Errorf("Failed to create PDB: %v", err)
continue
Expand Down

0 comments on commit 6a69c00

Please sign in to comment.