{"record":{"id":"15f76fe8fe346509","repo":"dagger/dagger","slug":"export-metrics-w","errorCode":null,"errorMessage":"export metrics: %w","messagePattern":"export metrics: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"engine/client/client.go","lineNumber":556,"sourceCode":"\tslog := slog.With(\"client\", c.ID)\n\n\tslog.Debug(\"subscribing to telemetry\", \"remote\", c.RunnerHost)\n\n\tc.telemetry = new(errgroup.Group)\n\thttpClient := c.newTelemetryHTTPClient()\n\tif c.EngineTrace != nil {\n\t\tif err := c.exportTraces(ctx, httpClient); err != nil {\n\t\t\treturn fmt.Errorf(\"export traces: %w\", err)\n\t\t}\n\t}\n\tif c.EngineLogs != nil {\n\t\tif err := c.exportLogs(ctx, httpClient); err != nil {\n\t\t\treturn fmt.Errorf(\"export logs: %w\", err)\n\t\t}\n\t}\n\tif c.EngineMetrics != nil {\n\t\tif err := c.exportMetrics(ctx, httpClient); err != nil {\n\t\t\treturn fmt.Errorf(\"export metrics: %w\", err)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (c *Client) startSession(ctx context.Context) (rerr error) {\n\tctx, sessionSpan := Tracer(ctx).Start(ctx, \"starting session\", telemetry.Encapsulate())\n\tdefer telemetry.EndWithCause(sessionSpan, &rerr)\n\n\tclientMetadata := c.clientMetadata()\n\tc.internalCtx = engine.ContextWithClientMetadata(c.internalCtx, &clientMetadata)\n\n\tattachables := []SessionAttachable{\n\t\t// sockets\n\t\tSocketProvider{EnableHostNetworkAccess: true},\n\t\t// secrets\n\t\tsecretprovider.NewSecretProvider(),\n\t\t// registry auth","sourceCodeStart":538,"sourceCodeEnd":574,"githubUrl":"https://github.com/dagger/dagger/blob/82ba2681dbe30d3547a1dc50ea495900ab5b6047/engine/client/client.go#L538-L574","documentation":"During subscribeTelemetry, if Client.EngineMetrics is non-nil the client starts an OTel metrics exporter toward the engine. A failure from c.exportMetrics is wrapped as \"export metrics: %w\". It means the metrics export stream could not be established at connect time.","triggerScenarios":"dagger.Connect() or ConnectEngineToEngine with Client.EngineMetrics enabled, and exportMetrics fails — HTTP dial/write error to the engine telemetry endpoint or context cancellation.","commonSituations":"Engine unreachable or restarted mid-connect; corporate proxy blocking the telemetry channel; short-lived connect context expiring during exporter setup.","solutions":["Inspect the wrapped cause for the transport-level error","Confirm engine reachability and that no proxy/firewall blocks the telemetry connection","Retry the connect","Leave Client.EngineMetrics nil if metrics export is not needed"],"exampleFix":"null","handlingStrategy":"try-catch","validationCode":"null","typeGuard":"null","tryCatchPattern":"_, err := dagger.Connect(ctx, dagger.WithEngineMetrics(true))\nif err != nil && strings.Contains(err.Error(), \"export metrics\") {\n    // retry or skip metrics export\n}","preventionTips":["Ensure the engine telemetry endpoint is reachable before enabling metrics","Use generous connect timeouts in slow networks","Check corporate proxy policy for OTLP/metrics traffic","Leave EngineMetrics nil when metrics aren't required"],"tags":["go","telemetry","metrics","otel"],"backgroundTag":"telemetry-export-failed","analyzedSha":"82ba2681dbe30d3547a1dc50ea495900ab5b6047","analyzedAt":"2026-09-05T07:21:37.930Z","contentChangedAt":"2026-09-05T07:21:37.930Z","schemaVersion":2},"datasetVersion":"2026-09-12T12:17:11.808Z"}