dapr/dapr · error

process component %s error: %s

Error message

process component %s error: %s

What it means

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.

Source

Thrown at pkg/runtime/hotreload/reconciler/components.go:137

	}

	log.Infof("Adding Component for processing: %s", comp.LogName())

	res := c.proc.AddPendingComponent(ctx, comp)
	if res == nil {
		return nil
	}
	select {
	case <-ctx.Done():
		return nil
	case err := <-res:
		if err == nil {
			log.Infof("Component updated: %s", comp.LogName())
			// An update which unmarked the actor state store frees the slot
			// for a previously skipped component.
			return c.replaySkippedActorStore(ctx)
		}
		err = fmt.Errorf("process component %s error: %s", comp.Name, err)
		if comp.Spec.IgnoreErrors {
			log.Errorf("Ignoring error processing component: %s", err)
			return nil
		}
		log.Warnf("Error processing component, daprd will exit gracefully: %s", err)
		return err
	}
}

func (c *components) delete(ctx context.Context, comp compapi.Component) error {
	c.dropSkippedActorStore(comp.Name)

	defer c.notifyActorStateStoreChanged()()

	if err := c.proc.Close(ctx, comp); err != nil {
		log.Errorf("error closing deleted component: %s", err)
	}

View on GitHub (pinned to 74ad417027)

Solutions

  1. Read the wrapped cause in the same log line ('process component X error: ...') and fix that component's spec
  2. If the component is optional, set spec.ignoreErrors: true so a bad update is logged and skipped instead of killing daprd
  3. Roll back the last change to the Component resource (kubectl rollout undo / GitOps revert)
  4. Restart the daprd pod after correcting the resource

Example fix

# before
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: bad-binding
spec:
  type: bindings.kafka
  version: v1
# after
spec:
  type: bindings.kafka
  version: v1
  ignoreErrors: true
Defensive patterns

Strategy: fallback

Validate before calling

# pre-verify the updated component can init before applying (self-hosted)
dapr run --app-id probe --resources-file component.yaml -- sleep 5

Try / catch

// built-in: the reconciler itself falls back when ignoreErrors is set
if comp.Spec.IgnoreErrors { /* error logged, daprd keeps running */ }

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Related errors


AI-assisted analysis of dapr/dapr@74ad417027 (2026-08-16). Data as JSON: /api/errors/1d110c3b09742984. Report an issue: GitHub.