{"record":{"id":"1d110c3b09742984","repo":"dapr/dapr","slug":"process-component-s-error-s-1d110c","errorCode":null,"errorMessage":"process component %s error: %s","messagePattern":"process component (.+?) error: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/runtime/hotreload/reconciler/components.go","lineNumber":137,"sourceCode":"\t}\n\n\tlog.Infof(\"Adding Component for processing: %s\", comp.LogName())\n\n\tres := c.proc.AddPendingComponent(ctx, comp)\n\tif res == nil {\n\t\treturn nil\n\t}\n\tselect {\n\tcase <-ctx.Done():\n\t\treturn nil\n\tcase err := <-res:\n\t\tif err == nil {\n\t\t\tlog.Infof(\"Component updated: %s\", comp.LogName())\n\t\t\t// An update which unmarked the actor state store frees the slot\n\t\t\t// for a previously skipped component.\n\t\t\treturn c.replaySkippedActorStore(ctx)\n\t\t}\n\t\terr = fmt.Errorf(\"process component %s error: %s\", comp.Name, err)\n\t\tif comp.Spec.IgnoreErrors {\n\t\t\tlog.Errorf(\"Ignoring error processing component: %s\", err)\n\t\t\treturn nil\n\t\t}\n\t\tlog.Warnf(\"Error processing component, daprd will exit gracefully: %s\", err)\n\t\treturn err\n\t}\n}\n\nfunc (c *components) delete(ctx context.Context, comp compapi.Component) error {\n\tc.dropSkippedActorStore(comp.Name)\n\n\tdefer c.notifyActorStateStoreChanged()()\n\n\tif err := c.proc.Close(ctx, comp); err != nil {\n\t\tlog.Errorf(\"error closing deleted component: %s\", err)\n\t}\n","sourceCodeStart":119,"sourceCodeEnd":155,"githubUrl":"https://github.com/dapr/dapr/blob/74ad41702745709bb15fe2114ff693b8c59bc3cc/pkg/runtime/hotreload/reconciler/components.go#L119-L155","documentation":"Hot-reload reconciler error wrapping the failure of an asynchronous component UPDATE: the pending component processed via AddPendingComponent returned a non-nil error (component re-init failed, e.g. bad metadata, unreachable backing service, missing secret). Unless spec.ignoreErrors is true on the component, daprd exits gracefully; with ignoreErrors the error is logged and processing continues.","triggerScenarios":"A hot-reload UPDATE event for a component whose new spec fails initialization — changing a pubsub/binding's metadata to invalid values via kubectl while hot reloading is enabled; the wrapped cause is the underlying component init error.","commonSituations":"Editing a live Component (connection string, secret refs, scopes) and getting it wrong; hot reloading enabled via the Configuration hotReloading.enabled flag; daprd pod then exits and the app loses its sidecar.","solutions":["Read the wrapped cause in the same log line ('process component X error: ...') and fix that component's spec","If the component is optional, set spec.ignoreErrors: true so a bad update is logged and skipped instead of killing daprd","Roll back the last change to the Component resource (kubectl rollout undo / GitOps revert)","Restart the daprd pod after correcting the resource"],"exampleFix":"# before\napiVersion: dapr.io/v1alpha1\nkind: Component\nmetadata:\n  name: bad-binding\nspec:\n  type: bindings.kafka\n  version: v1\n# after\nspec:\n  type: bindings.kafka\n  version: v1\n  ignoreErrors: true","handlingStrategy":"fallback","validationCode":"# pre-verify the updated component can init before applying (self-hosted)\ndapr run --app-id probe --resources-file component.yaml -- sleep 5","typeGuard":null,"tryCatchPattern":"// built-in: the reconciler itself falls back when ignoreErrors is set\nif comp.Spec.IgnoreErrors { /* error logged, daprd keeps running */ }","preventionTips":["Set spec.ignoreErrors: true on non-critical components in clusters with hot reloading","Stage component changes through GitOps with a dry-run/validation step","Watch daprd logs after applying component updates before walking away"],"tags":["hotreload","components","reconciler","init","kubernetes","graceful-exit"],"backgroundTag":null,"analyzedSha":"74ad41702745709bb15fe2114ff693b8c59bc3cc","analyzedAt":"2026-08-16T04:22:26.543Z","schemaVersion":2},"datasetVersion":"2026-08-16T08:17:34.114Z"}