Skip to content

Commit 7ec9344

Browse files
committed
Reduce noisy "object has been modified" logs/events
1 parent 5037c47 commit 7ec9344

File tree

4 files changed

+42
-12
lines changed

4 files changed

+42
-12
lines changed

client/injection/apiextensions/reconciler/apiextensions/v1/customresourcedefinition/reconciler.go

Lines changed: 10 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

client/injection/apiextensions/reconciler/apiextensions/v1beta1/customresourcedefinition/reconciler.go

Lines changed: 10 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

codegen/cmd/injection-gen/generators/reconciler/reconciler_reconciler.go

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,10 @@ func (g *reconcilerReconcilerGenerator) GenerateType(c *generator.Context, t *ty
134134
Package: "k8s.io/apimachinery/pkg/api/errors",
135135
Name: "IsNotFound",
136136
}),
137+
"apierrsIsConflict": c.Universe.Function(types.Name{
138+
Package: "k8s.io/apimachinery/pkg/api/errors",
139+
Name: "IsConflict",
140+
}),
137141
"metav1GetOptions": c.Universe.Function(types.Name{
138142
Package: "k8s.io/apimachinery/pkg/apis/meta/v1",
139143
Name: "GetOptions",
@@ -573,6 +577,8 @@ func (r *reconcilerImpl) Reconcile(ctx {{.contextContext|raw}}, key string) erro
573577
// This is a wrapped error, don't emit an event.
574578
} else if ok, _ := {{ .controllerIsRequeueKey|raw }}(reconcileEvent); ok {
575579
// This is a wrapped error, don't emit an event.
580+
} else if {{ .apierrsIsConflict|raw }}(reconcileEvent) {
581+
// Conflict errors are expected, don't emit an event.
576582
} else {
577583
logger.Errorw("Returned an error", zap.Error(reconcileEvent))
578584
r.Recorder.Event(resource, {{.corev1EventTypeWarning|raw}}, "InternalError", reconcileEvent.Error())
@@ -698,8 +704,10 @@ func (r *reconcilerImpl) updateFinalizersFilteredServerSideApply(ctx {{.contextC
698704
699705
updated, err := patcher.Patch(ctx, resource.Name, {{.typesApplyPatchType|raw}}, patch, patchOpts)
700706
if err != nil {
701-
r.Recorder.Eventf(resource, {{.corev1EventTypeWarning|raw}}, "FinalizerUpdateFailed",
702-
"Failed to update finalizers for %q via server-side apply: %v", resource.Name, err)
707+
if !{{ .apierrsIsConflict|raw }}(err) {
708+
r.Recorder.Eventf(resource, {{.corev1EventTypeWarning|raw}}, "FinalizerUpdateFailed",
709+
"Failed to update finalizers for %q via server-side apply: %v", resource.Name, err)
710+
}
703711
} else {
704712
r.Recorder.Eventf(updated, {{.corev1EventTypeNormal|raw}}, "FinalizerUpdate",
705713
"Updated finalizers for %q via server-side apply", resource.GetName())
@@ -754,8 +762,10 @@ func (r *reconcilerImpl) updateFinalizersFilteredMergePatch(ctx {{.contextContex
754762
resourceName := resource.Name
755763
updated, err := patcher.Patch(ctx, resourceName, {{.typesMergePatchType|raw}}, patch, {{.metav1PatchOptions|raw}}{})
756764
if err != nil {
757-
r.Recorder.Eventf(existing, {{.corev1EventTypeWarning|raw}}, "FinalizerUpdateFailed",
758-
"Failed to update finalizers for %q: %v", resourceName, err)
765+
if !{{ .apierrsIsConflict|raw }}(err) {
766+
r.Recorder.Eventf(existing, {{.corev1EventTypeWarning|raw}}, "FinalizerUpdateFailed",
767+
"Failed to update finalizers for %q: %v", resourceName, err)
768+
}
759769
} else {
760770
r.Recorder.Eventf(updated, {{.corev1EventTypeNormal|raw}}, "FinalizerUpdate",
761771
"Updated %q finalizers", resource.GetName())

controller/controller.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828

2929
"go.uber.org/zap"
3030
"go.uber.org/zap/zapcore"
31+
apierrors "k8s.io/apimachinery/pkg/api/errors"
3132
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3233
"k8s.io/apimachinery/pkg/runtime/schema"
3334
"k8s.io/apimachinery/pkg/types"
@@ -542,6 +543,13 @@ func (c *Impl) handleErr(logger *zap.SugaredLogger, err error, key types.Namespa
542543
return
543544
}
544545

546+
// Conflict errors are expected, requeue to retry
547+
if apierrors.IsConflict(err) {
548+
logger.Debugw("Reconcile conflict", zap.Duration("duration", time.Since(startTime)))
549+
c.workQueue.AddRateLimited(key)
550+
return
551+
}
552+
545553
logger.Errorw("Reconcile error", zap.Duration("duration", time.Since(startTime)), zap.Error(err))
546554

547555
// Re-queue the key if it's a transient error.

0 commit comments

Comments
 (0)