@@ -256,7 +256,13 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.
256
256
// which is caught by goleaks.
257
257
defer http .DefaultClient .CloseIdleConnections ()
258
258
259
- tracerProvider , sqlDriver := ConfigureTraceProvider (ctx , logger , inv , cfg )
259
+ tracerProvider , sqlDriver , closeTracing := ConfigureTraceProvider (ctx , logger , inv , cfg )
260
+ defer func () {
261
+ logger .Debug (ctx , "closing tracing" )
262
+ traceCloseErr := shutdownWithTimeout (closeTracing , 5 * time .Second )
263
+ logger .Debug (ctx , "tracing closed" , slog .Error (traceCloseErr ))
264
+ }()
265
+
260
266
httpServers , err := ConfigureHTTPServers (inv , cfg )
261
267
if err != nil {
262
268
return xerrors .Errorf ("configure http(s): %w" , err )
@@ -1863,9 +1869,15 @@ func (s *HTTPServers) Close() {
1863
1869
}
1864
1870
}
1865
1871
1866
- func ConfigureTraceProvider (ctx context.Context , logger slog.Logger , inv * clibase.Invocation , cfg * codersdk.DeploymentValues ) (trace.TracerProvider , string ) {
1872
+ func ConfigureTraceProvider (
1873
+ ctx context.Context ,
1874
+ logger slog.Logger ,
1875
+ inv * clibase.Invocation ,
1876
+ cfg * codersdk.DeploymentValues ,
1877
+ ) (trace.TracerProvider , string , func (context.Context ) error ) {
1867
1878
var (
1868
- tracerProvider trace.TracerProvider
1879
+ tracerProvider = trace .NewNoopTracerProvider ()
1880
+ closeTracing = func (context.Context ) error { return nil }
1869
1881
sqlDriver = "postgres"
1870
1882
)
1871
1883
// Coder tracing should be disabled if telemetry is disabled unless
@@ -1878,19 +1890,14 @@ func ConfigureTraceProvider(ctx context.Context, logger slog.Logger, inv *clibas
1878
1890
}
1879
1891
1880
1892
if cfg .Trace .Enable .Value () || shouldCoderTrace || cfg .Trace .HoneycombAPIKey != "" {
1881
- sdkTracerProvider , closeTracing , err := tracing .TracerProvider (ctx , "coderd" , tracing.TracerOpts {
1893
+ sdkTracerProvider , _closeTracing , err := tracing .TracerProvider (ctx , "coderd" , tracing.TracerOpts {
1882
1894
Default : cfg .Trace .Enable .Value (),
1883
1895
Coder : shouldCoderTrace ,
1884
1896
Honeycomb : cfg .Trace .HoneycombAPIKey .String (),
1885
1897
})
1886
1898
if err != nil {
1887
1899
logger .Warn (ctx , "start telemetry exporter" , slog .Error (err ))
1888
1900
} else {
1889
- // allow time for traces to flush even if command context is canceled
1890
- defer func () {
1891
- _ = shutdownWithTimeout (closeTracing , 5 * time .Second )
1892
- }()
1893
-
1894
1901
d , err := tracing .PostgresDriver (sdkTracerProvider , "coderd.database" )
1895
1902
if err != nil {
1896
1903
logger .Warn (ctx , "start postgres tracing driver" , slog .Error (err ))
@@ -1899,9 +1906,10 @@ func ConfigureTraceProvider(ctx context.Context, logger slog.Logger, inv *clibas
1899
1906
}
1900
1907
1901
1908
tracerProvider = sdkTracerProvider
1909
+ closeTracing = _closeTracing
1902
1910
}
1903
1911
}
1904
- return tracerProvider , sqlDriver
1912
+ return tracerProvider , sqlDriver , closeTracing
1905
1913
}
1906
1914
1907
1915
func ConfigureHTTPServers (inv * clibase.Invocation , cfg * codersdk.DeploymentValues ) (_ * HTTPServers , err error ) {
0 commit comments