diff --git a/internal/controller/bucket/helpers.go b/internal/controller/bucket/helpers.go index a23bbe8d..b8f62d7f 100644 --- a/internal/controller/bucket/helpers.go +++ b/internal/controller/bucket/helpers.go @@ -241,14 +241,25 @@ func (c *external) updateBucketCR(ctx context.Context, bucket *v1alpha1.Bucket, ctx, span := otel.Tracer("").Start(ctx, "bucket.external.updateBucketCR") defer span.End() + bucketDeepCopy := &v1alpha1.Bucket{} nn := types.NamespacedName{Name: bucket.GetName()} + err := retry.OnError(retry.DefaultRetry, resource.IsAPIError, func() error { + if err := c.kubeClient.Get(ctx, nn, bucket); err != nil { + return err + } + bucketDeepCopy = bucket.DeepCopy() + return nil + }) + if err != nil { + if kerrors.IsNotFound(err) { + c.log.Info("Bucket doesn't exists", consts.KeyBucketName, bucket.Name) + + return nil + } + } for _, cb := range callbacks { - err := retry.OnError(retry.DefaultRetry, resource.IsAPIError, func() error { - if err := c.kubeClient.Get(ctx, nn, bucket); err != nil { - return err - } - bucketDeepCopy := bucket.DeepCopy() + if err := retry.OnError(retry.DefaultRetry, resource.IsAPIError, func() error { switch cb(bucket) { case NeedsStatusUpdate: return c.kubeClient.Status().Patch(ctx, bucket, client.MergeFrom(bucketDeepCopy)) @@ -257,15 +268,7 @@ func (c *external) updateBucketCR(ctx context.Context, bucket *v1alpha1.Bucket, default: return nil } - }) - - if err != nil { - if kerrors.IsNotFound(err) { - c.log.Info("Bucket doesn't exists", consts.KeyBucketName, bucket.Name) - - break - } - + }); err != nil { return errors.Wrap(err, "unable to update object") } }