dapr/dapr · critical

failed to load components: %s

Error message

failed to load components: %s

What it means

loadComponents failed: either the loader errored while reading manifests (disk: unreadable/invalid YAML in the resources path; kubernetes: operator component stream error) or a component's blocking init failed without spec.ignoreErrors (surfaced as the nested 'process component ... error' from initComponentBlocking). Non-nil here terminates daprd via the runner manager.

Source

Thrown at pkg/runtime/runtime.go:740

	err = a.initNameResolution(ctx)
	if err != nil {
		log.Error(err.Error())
	}

	// Start proxy
	a.initProxy()

	a.initDirectMessaging(a.nameResolver)

	a.initPluggableComponents(ctx)

	if err = a.appendBuiltinSecretStore(ctx); err != nil {
		return fmt.Errorf("failed to init built-in secret store: %s", err)
	}

	err = a.loadComponents(ctx)
	if err != nil {
		return fmt.Errorf("failed to load components: %s", err)
	}

	if err = a.flushOutstandingComponents(ctx); err != nil {
		return err
	}

	err = a.loadHTTPEndpoints(ctx)
	if err != nil {
		log.Warnf("failed to load HTTP endpoints: %s", err)
	}

	if err = a.flushOutstandingHTTPEndpoints(ctx); err != nil {
		return err
	}

	err = a.loadDeclarativeSubscriptions(ctx)
	if err != nil {
		return fmt.Errorf("failed to load declarative subscriptions: %s", err)

View on GitHub (pinned to 74ad417027)

Solutions

  1. Check the nested error text: 'process component X error' points to Init, otherwise suspect manifest loading
  2. Run `dapr components` / `kubectl get components -o yaml` and lint every manifest (kind: Component, apiVersion dapr.io/v1alpha1, valid type/version)
  3. Fix the underlying Init cause (credentials, host, metadata) or set spec.ignoreErrors: true on optional components
  4. Confirm the resources path contains only component YAMLs and is readable by the daprd user

Example fix

# before
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: statestore
spec:
  type: state.redis
  metadata:
    - name: redisHost
# after
spec:
  type: state.redis
  version: v1
  metadata:
    - name: redisHost
      value: redis:6379
Defensive patterns

Strategy: validation

Validate before calling

func validateComponentManifest(c compapi.Component) error {
    if c.APIVersion != "dapr.io/v1alpha1" || c.Kind != "Component" { return fmt.Errorf("not a Component manifest") }
    if !strings.Contains(c.Spec.Type, ".") { return fmt.Errorf("type must be <category>.<impl>") }
    if c.Spec.Version == "" { return fmt.Errorf("version is required") }
    return nil
}

Type guard

func isComponentManifest(obj runtime.Object) bool {
    _, ok := obj.(*compapi.Component)
    return ok
}

Try / catch

Let startup fail fast (the runner manager shuts daprd down); in the deploy pipeline, catch the exit, parse the nested 'process component X error' to identify the component, fix its metadata/credentials, and redeploy. Do not blanket-ignore - a missing state store breaks the app anyway.

Prevention

When it happens

Trigger: Standalone: malformed YAML, wrong apiVersion/kind, or a directory in --resources-path containing a broken file. Kubernetes: operator watch/stream failures or a component whose Init fails (bad credentials, unreachable backing service) with ignoreErrors unset.

Common situations: Invalid component manifests pushed in CI; secrets referenced but absent; backing services unreachable at pod start; typo'd metadata crashing Init; resource quota or RBAC issues breaking the operator client.

Related errors


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