Skip to content

Commit 668922f

Browse files
authored
fix: don't ignore not found error in its controller (#9823)
1 parent eeb11cc commit 668922f

File tree

2 files changed

+13
-14
lines changed

2 files changed

+13
-14
lines changed

pkg/controller/kubebuilderx/controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ func (c *controller) emitFailureEvent() {
164164
return
165165
}
166166
// TODO(free6om): make error message user-friendly
167-
c.tree.EventRecorder.Eventf(c.tree.GetRoot(), corev1.EventTypeWarning, "FailedReconcile", "reconcile failed: %s", c.err.Error())
167+
c.tree.EventRecorder.Eventf(c.tree.GetRoot(), corev1.EventTypeWarning, "FailedReconcile", "%s", c.err.Error())
168168
}
169169

170170
func NewController(ctx context.Context, cli client.Client, req ctrl.Request, recorder record.EventRecorder, logger logr.Logger) Controller {

pkg/controller/kubebuilderx/plan_builder.go

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ import (
3030
corev1 "k8s.io/api/core/v1"
3131
rbacv1 "k8s.io/api/rbac/v1"
3232
"k8s.io/apimachinery/pkg/api/equality"
33-
apierrors "k8s.io/apimachinery/pkg/api/errors"
3433
"k8s.io/apimachinery/pkg/util/sets"
3534
"k8s.io/client-go/tools/record"
35+
"k8s.io/klog/v2"
3636
"sigs.k8s.io/controller-runtime/pkg/client"
3737
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
3838

@@ -265,8 +265,8 @@ func (b *PlanBuilder) defaultWalkFunc(v graph.Vertex) error {
265265

266266
func (b *PlanBuilder) createObject(ctx context.Context, vertex *model.ObjectVertex) error {
267267
err := b.cli.Create(ctx, vertex.Obj, clientOption(vertex))
268-
if err != nil && !apierrors.IsAlreadyExists(err) {
269-
return err
268+
if err != nil {
269+
return fmt.Errorf("create %T %s failed: %w", vertex.Obj, klog.KObj(vertex.Obj), err)
270270
}
271271
b.emitEvent(vertex.Obj, "SuccessfulCreate", model.CREATE)
272272
return nil
@@ -282,8 +282,8 @@ func (b *PlanBuilder) updateObject(ctx context.Context, vertex *model.ObjectVert
282282
err = b.cli.Update(ctx, vertex.Obj, clientOption(vertex))
283283
reason = "SuccessfulUpdate"
284284
}
285-
if err != nil && !apierrors.IsNotFound(err) {
286-
return err
285+
if err != nil {
286+
return fmt.Errorf("update %T %s failed: %w", vertex.Obj, klog.KObj(vertex.Obj), err)
287287
}
288288
b.emitEvent(vertex.Obj, reason, model.UPDATE)
289289
return nil
@@ -300,8 +300,8 @@ func (b *PlanBuilder) patchObject(ctx context.Context, vertex *model.ObjectVerte
300300
err = b.cli.Patch(ctx, vertex.Obj, patch, clientOption(vertex))
301301
reason = "SuccessfulPatch"
302302
}
303-
if err != nil && !apierrors.IsNotFound(err) {
304-
return err
303+
if err != nil {
304+
return fmt.Errorf("patch %T %s failed: %w", vertex.Obj, klog.KObj(vertex.Obj), err)
305305
}
306306
b.emitEvent(vertex.Obj, reason, model.PATCH)
307307
return nil
@@ -314,15 +314,14 @@ func (b *PlanBuilder) deleteObject(ctx context.Context, vertex *model.ObjectVert
314314
}
315315
if len(finalizer) > 0 && controllerutil.RemoveFinalizer(vertex.Obj, finalizer) {
316316
err := b.cli.Update(ctx, vertex.Obj, clientOption(vertex))
317-
if err != nil && !apierrors.IsNotFound(err) {
318-
b.transCtx.logger.Error(err, fmt.Sprintf("delete %T error: %s", vertex.Obj, vertex.Obj.GetName()))
319-
return err
317+
if err != nil {
318+
return fmt.Errorf("delete %T %s failed: %w", vertex.Obj, klog.KObj(vertex.Obj), err)
320319
}
321320
}
322321
if !model.IsObjectDeleting(vertex.Obj) {
323322
err := b.cli.Delete(ctx, vertex.Obj, clientOption(vertex))
324-
if err != nil && !apierrors.IsNotFound(err) {
325-
return err
323+
if err != nil {
324+
return fmt.Errorf("delete %T %s failed: %w", vertex.Obj, klog.KObj(vertex.Obj), err)
326325
}
327326
b.emitEvent(vertex.Obj, "SuccessfulDelete", model.DELETE)
328327
}
@@ -331,7 +330,7 @@ func (b *PlanBuilder) deleteObject(ctx context.Context, vertex *model.ObjectVert
331330

332331
func (b *PlanBuilder) statusObject(ctx context.Context, vertex *model.ObjectVertex) error {
333332
if err := b.cli.Status().Update(ctx, vertex.Obj, clientOption(vertex)); err != nil {
334-
return err
333+
return fmt.Errorf("status %T %s failed: %w", vertex.Obj, klog.KObj(vertex.Obj), err)
335334
}
336335
return nil
337336
}

0 commit comments

Comments
 (0)