dagger/dagger · error

failed to create telemetry proxy listener: %w

Error message

failed to create telemetry proxy listener: %w

What it means

Wrapped by setupTelemetryProxy when its loopback TCP listener (127.0.0.1:0) cannot be created. The OTLP proxy needs a local port; failure indicates no free ports, a missing loopback interface, or FD exhaustion on the host.

Source

Thrown at internal/cmd/dagger/run.go:226

			}

			cmdErr = subCmd.Run()
		} else {
			subCmd.Stdout = stdout
			subCmd.Stderr = stderr
			cmdErr = subCmd.Run()
		}

		return cmdErr
	})
}

// setupTelemetryProxy creates an OpenTelemetry proxy server and returns
// environment variables so that child processes can export to it.
func setupTelemetryProxy(ctx context.Context) ([]string, error) {
	listener, err := net.Listen("tcp", "127.0.0.1:0")
	if err != nil {
		return nil, fmt.Errorf("failed to create telemetry proxy listener: %w", err)
	}

	otelProto := "http/protobuf"
	otelEndpoint := "http://" + listener.Addr().String()

	mux := http.NewServeMux()

	// Handle traces
	mux.HandleFunc("/v1/traces", func(w http.ResponseWriter, r *http.Request) {
		body, bodyErr := io.ReadAll(r.Body)
		if bodyErr != nil {
			http.Error(w, bodyErr.Error(), http.StatusBadRequest)
			return
		}
		var req coltracepb.ExportTraceServiceRequest
		if unmarshalErr := proto.Unmarshal(body, &req); unmarshalErr != nil {
			http.Error(w, unmarshalErr.Error(), http.StatusBadRequest)
			return

View on GitHub (pinned to 82ba2681db)

Solutions

  1. Free file descriptors or ports on the host
  2. Verify 127.0.0.1 loopback is available
  3. Skip the proxy (unset telemetry forwarding) if not needed
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at internal/cmd/dagger/run.go:226 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/111dd4952e04d5fe. Report an issue: GitHub.