Skip to content

Commit d53268a

Browse files
cjc7373apecloud-bot
authored andcommitted
fix: don't ignore not found error in its controller (#9823)
(cherry picked from commit 668922f)
1 parent b930e40 commit d53268a

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
@@ -150,7 +150,7 @@ func (c *controller) emitFailureEvent() {
150150
return
151151
}
152152
// TODO(free6om): make error message user-friendly
153-
c.tree.EventRecorder.Eventf(c.tree.GetRoot(), corev1.EventTypeWarning, "FailedReconcile", "reconcile failed: %s", c.err.Error())
153+
c.tree.EventRecorder.Eventf(c.tree.GetRoot(), corev1.EventTypeWarning, "FailedReconcile", "%s", c.err.Error())
154154
}
155155

156156
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
@@ -29,9 +29,9 @@ import (
2929
"github.com/go-logr/logr"
3030
corev1 "k8s.io/api/core/v1"
3131
"k8s.io/apimachinery/pkg/api/equality"
32-
apierrors "k8s.io/apimachinery/pkg/api/errors"
3332
"k8s.io/apimachinery/pkg/util/sets"
3433
"k8s.io/client-go/tools/record"
34+
"k8s.io/klog/v2"
3535
"sigs.k8s.io/controller-runtime/pkg/client"
3636
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
3737

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

256256
func (b *PlanBuilder) createObject(ctx context.Context, vertex *model.ObjectVertex) error {
257257
err := b.cli.Create(ctx, vertex.Obj, clientOption(vertex))
258-
if err != nil && !apierrors.IsAlreadyExists(err) {
259-
return err
258+
if err != nil {
259+
return fmt.Errorf("create %T %s failed: %w", vertex.Obj, klog.KObj(vertex.Obj), err)
260260
}
261261
b.emitEvent(vertex.Obj, "SuccessfulCreate", model.CREATE)
262262
return nil
@@ -272,8 +272,8 @@ func (b *PlanBuilder) updateObject(ctx context.Context, vertex *model.ObjectVert
272272
err = b.cli.Update(ctx, vertex.Obj, clientOption(vertex))
273273
reason = "SuccessfulUpdate"
274274
}
275-
if err != nil && !apierrors.IsNotFound(err) {
276-
return err
275+
if err != nil {
276+
return fmt.Errorf("update %T %s failed: %w", vertex.Obj, klog.KObj(vertex.Obj), err)
277277
}
278278
b.emitEvent(vertex.Obj, reason, model.UPDATE)
279279
return nil
@@ -290,8 +290,8 @@ func (b *PlanBuilder) patchObject(ctx context.Context, vertex *model.ObjectVerte
290290
err = b.cli.Patch(ctx, vertex.Obj, patch, clientOption(vertex))
291291
reason = "SuccessfulPatch"
292292
}
293-
if err != nil && !apierrors.IsNotFound(err) {
294-
return err
293+
if err != nil {
294+
return fmt.Errorf("patch %T %s failed: %w", vertex.Obj, klog.KObj(vertex.Obj), err)
295295
}
296296
b.emitEvent(vertex.Obj, reason, model.PATCH)
297297
return nil
@@ -304,15 +304,14 @@ func (b *PlanBuilder) deleteObject(ctx context.Context, vertex *model.ObjectVert
304304
}
305305
if len(finalizer) > 0 && controllerutil.RemoveFinalizer(vertex.Obj, finalizer) {
306306
err := b.cli.Update(ctx, vertex.Obj, clientOption(vertex))
307-
if err != nil && !apierrors.IsNotFound(err) {
308-
b.transCtx.logger.Error(err, fmt.Sprintf("delete %T error: %s", vertex.Obj, vertex.Obj.GetName()))
309-
return err
307+
if err != nil {
308+
return fmt.Errorf("delete %T %s failed: %w", vertex.Obj, klog.KObj(vertex.Obj), err)
310309
}
311310
}
312311
if !model.IsObjectDeleting(vertex.Obj) {
313312
err := b.cli.Delete(ctx, vertex.Obj, clientOption(vertex))
314-
if err != nil && !apierrors.IsNotFound(err) {
315-
return err
313+
if err != nil {
314+
return fmt.Errorf("delete %T %s failed: %w", vertex.Obj, klog.KObj(vertex.Obj), err)
316315
}
317316
b.emitEvent(vertex.Obj, "SuccessfulDelete", model.DELETE)
318317
}
@@ -321,7 +320,7 @@ func (b *PlanBuilder) deleteObject(ctx context.Context, vertex *model.ObjectVert
321320

322321
func (b *PlanBuilder) statusObject(ctx context.Context, vertex *model.ObjectVertex) error {
323322
if err := b.cli.Status().Update(ctx, vertex.Obj, clientOption(vertex)); err != nil {
324-
return err
323+
return fmt.Errorf("status %T %s failed: %w", vertex.Obj, klog.KObj(vertex.Obj), err)
325324
}
326325
return nil
327326
}

0 commit comments

Comments
 (0)