dagger/dagger · error

dependent service exited

Error message

dependent service exited

What it means

Sentinel error used by stopDueToDependencyExit when a service's dependency exits without a specific error: the service is deliberately stopped because something it depends on went away, and the stop is attributed to this cause via setServiceErr.

Source

Thrown at core/service.go:985

			sig = syscall.SIGKILL
		}
		err := signalSvc(ctx, sig)
		if err != nil {
			return err
		}
		select {
		case <-ctx.Done():
			slog.Info("service stop interrupted", "err", ctx.Err())
			return ctx.Err()
		case <-exited:
			slog.Info("service exited in stop", "err", exitErr)
			return nil
		}
	}

	stopDueToDependencyExit := func(depErr error) error {
		if depErr == nil {
			depErr = fmt.Errorf("dependent service exited")
		}
		setServiceErr(depErr)
		if err := stopSvc(context.Background(), true); err != nil {
			return errors.Join(depErr, err)
		}
		return depErr
	}

	// If a dependency exits while exit propagation is suppressed (e.g. during a
	// service terminal), remember it and stop this service when suppression lifts.
	var pendingDependencyErr error
	var havePendingDependencyErr bool
	deferDependencyExitIfSuppressed := func(depErr error) bool {
		if !running.isDependencyExitPropagationSuppressed() {
			return false
		}
		pendingDependencyErr = depErr
		havePendingDependencyErr = true

View on GitHub (pinned to 82ba2681db)

Solutions

  1. Investigate why the upstream dependent service exited
  2. Check dependent service logs for its own exit cause
  3. Restart the service graph once dependencies are healthy
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at core/service.go:985 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of dagger/dagger@82ba2681db (2026-09-05). Data as JSON: /api/errors/4548d5ea9d3ae012. Report an issue: GitHub.