( ctx context.Context, params client.Params, fn runClientCallback, )
| 78 | type runClientCallback func(context.Context, *client.Client) error |
| 79 | |
| 80 | func withEngine( |
| 81 | ctx context.Context, |
| 82 | params client.Params, |
| 83 | fn runClientCallback, |
| 84 | ) (rerr error) { |
| 85 | if !moduleNoURL { |
| 86 | if modRef, _ := getExplicitModuleSourceRef(); modRef != "" { |
| 87 | params.Module = modRef |
| 88 | } |
| 89 | } |
| 90 | return Frontend.Run(ctx, opts, func(ctx context.Context) (_ cleanups.CleanupF, rerr error) { |
| 91 | var cleanup cleanups.Cleanups |
| 92 | |
| 93 | // Init tracing as early as possible and shutdown after the command |
| 94 | // completes, ensuring progress is fully flushed to the frontend. |
| 95 | ctx, cleanupTelemetry := initEngineTelemetry(ctx) |
| 96 | |
| 97 | otel.SetErrorHandler(otel.ErrorHandlerFunc(func(err error) { |
| 98 | if opts.Debug { |
| 99 | slog.Error("failed to emit telemetry", "error", err) |
| 100 | } |
| 101 | Frontend.SetTelemetryError(err) |
| 102 | })) |
| 103 | cleanup.Add("close telemetry", func() error { |
| 104 | cleanupTelemetry(rerr) |
| 105 | return nil |
| 106 | }) |
| 107 | |
| 108 | if debugFlag { |
| 109 | params.LogLevel = slog.LevelDebug |
| 110 | } |
| 111 | |
| 112 | if useCloudEngine { |
| 113 | params.RunnerHost = engine.DefaultCloudRunnerHost |
| 114 | } else if params.RunnerHost == "" { |
| 115 | params.RunnerHost = RunnerHost |
| 116 | } |
| 117 | |
| 118 | if RunnerImageLoader != "" { |
| 119 | backend, err := imageload.GetBackend(RunnerImageLoader) |
| 120 | if err != nil { |
| 121 | return cleanup.Run, err |
| 122 | } |
| 123 | params.ImageLoaderBackend = backend |
| 124 | } |
| 125 | |
| 126 | params.AllowedLLMModules = allowedLLMModules |
| 127 | |
| 128 | params.CloudURLCallback = Frontend.SetCloudURL |
| 129 | |
| 130 | params.EngineTrace = telemetry.SpanForwarder{ |
| 131 | Processors: telemetry.SpanProcessors, |
| 132 | } |
| 133 | params.EngineLogs = telemetry.LogForwarder{ |
| 134 | Processors: telemetry.LogProcessors, |
| 135 | } |
| 136 | params.EngineMetrics = telemetry.MetricExporters |
| 137 |
no test coverage detected