{"record":{"id":"aefb9bf38820dfa6","repo":"kubernetes/kubernetes","slug":"v-failed-with-v","errorCode":null,"errorMessage":"%v failed with : %v","messagePattern":"(.+?) failed with : (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/controller/daemon/daemon_controller.go","lineNumber":411,"sourceCode":"\tfor dsc.processNextWorkItem(ctx) {\n\t}\n}\n\n// processNextWorkItem deals with one key off the queue.  It returns false when it's time to quit.\nfunc (dsc *DaemonSetsController) processNextWorkItem(ctx context.Context) bool {\n\tdsKey, quit := dsc.queue.Get()\n\tif quit {\n\t\treturn false\n\t}\n\tdefer dsc.queue.Done(dsKey)\n\n\terr := dsc.syncHandler(ctx, dsKey)\n\tif err == nil {\n\t\tdsc.queue.Forget(dsKey)\n\t\treturn true\n\t}\n\n\tutilruntime.HandleError(fmt.Errorf(\"%v failed with : %v\", dsKey, err))\n\tdsc.queue.AddRateLimited(dsKey)\n\n\treturn true\n}\n\nfunc (dsc *DaemonSetsController) enqueue(ds *apps.DaemonSet) {\n\tkey, err := controller.KeyFunc(ds)\n\tif err != nil {\n\t\tutilruntime.HandleError(fmt.Errorf(\"Couldn't get key for object %#v: %v\", ds, err))\n\t\treturn\n\t}\n\n\t// TODO: Handle overlapping controllers better. See comment in ReplicationManager.\n\tdsc.queue.Add(key)\n}\n\nfunc (dsc *DaemonSetsController) enqueueDaemonSetAfter(obj interface{}, after time.Duration) {\n\tkey, err := controller.KeyFunc(obj)","sourceCodeStart":393,"sourceCodeEnd":429,"githubUrl":"https://github.com/kubernetes/kubernetes/blob/b882c60b4023bdf09264c2d5d30a2cadebc240fb/pkg/controller/daemon/daemon_controller.go#L393-L429","documentation":"Top-level catch-all logged by processNextWorkItem when dsc.syncHandler (syncDaemonSet) returns a non-nil error for a DaemonSet key. It is the wrapper that means 'reconciling this DaemonSet failed for some reason' -- the underlying cause is the second %v. After logging, the key is re-queued via AddRateLimited, so the controller retries with exponential backoff. Seeing this repeatedly means the underlying error (transient API failure, bad object, etc.) is not resolving.","triggerScenarios":"Any error returned from syncDaemonSet for a given namespace/name key: apiserver flake during DS/pod/node lookup, conflict on status update, failure to construct history, or failure to create/delete daemon pods. Logged once per failed reconciliation attempt.","commonSituations":"Control-plane under load or apiserver briefly unreachable; a DaemonSet whose spec is malformed (bad selector, unparseable update strategy); etcd latency causing conflicts; informer cache still warming up at controller start.","solutions":["Read the second %v in the log line to find the real root cause; this wrapper is never the actionable error itself.","If the cause is transient (timeout, connection refused, etcd leader election), verify apiserver health and let the rate-limited retry succeed.","If the cause repeats for the same key indefinitely, inspect that DaemonSet object (kubectl get ds -n <ns> <name> -o yaml) for a malformed spec.","Check kube-controller-manager logs around the same timestamp for the unwrapped error and any related event recordings."],"exampleFix":"// This is an internal controller log; no caller code change fixes it directly.\n// Action: grep the underlying error from the same log stream, e.g.\n//   kubectl -n kube-system logs <kube-controller-manager-pod> | grep '<ds-key> failed with'\n// then resolve the nested cause (see errors 541-559).","handlingStrategy":"retry","validationCode":"// Internal controller log; verify controller-manager health before relying on it.\n// kubectl -n kube-system get pod -l component=kube-controller-manager\n// kubectl -n kube-system logs <pod> --previous | grep '<ds-key> failed with'","typeGuard":null,"tryCatchPattern":"// The controller already retries via AddRateLimited. To classify the wrapped error:\n// if apierrors.IsTimeout(err) || apierrors.IsServerTimeout(err) { /* transient */ }\n// if apierrors.IsConflict(err) { /* retry with fresh GET */ }\n// if apierrors.IsInvalid(err) { /* fix the object spec */ }","preventionTips":["Ensure apiserver has adequate resources and stable etcd quorum.","Validate DaemonSet manifests before applying (kubectl apply --dry-run=server).","Run only the elected kube-controller-manager leader to avoid duplicate reconcile contention."],"tags":["daemonset","controller","reconciliation","retry"],"analyzedSha":"b882c60b4023bdf09264c2d5d30a2cadebc240fb","analyzedAt":"2026-08-07T04:07:48.144Z","schemaVersion":2},"datasetVersion":"2026-08-07T07:17:06.508Z"}