3030 commit string
3131)
3232
33+ var otelShutdownFuncs []func ()
34+
3335var rootCmd = & cobra.Command {
3436 Use : "lantern-box" ,
3537 Version : version ,
@@ -72,7 +74,6 @@ func preRun(cmd *cobra.Command, args []string) {
7274 return
7375 }
7476
75- // TODO: what is the best place to do clean up of otel?
7677 otelOpts := & otel.Opts {
7778 Endpoint : otel .GetTelemetryEndpoint (telemetryEndpoint ),
7879 ProxyName : proxyInfo .Name ,
@@ -83,14 +84,33 @@ func preRun(cmd *cobra.Command, args []string) {
8384 ProxyProtocol : proxyInfo .Protocol ,
8485 }
8586
86- otel .InitGlobalMeterProvider (otelOpts )
87- otel .InitGlobalTracerProvider (otelOpts )
87+ meterShutdown , err := otel .InitGlobalMeterProvider (otelOpts )
88+ if err != nil {
89+ log .Warn ("telemetry disabled: failed to init meter provider: " , err )
90+ return
91+ }
92+ otelShutdownFuncs = append (otelShutdownFuncs , meterShutdown )
93+
94+ tracerShutdown , err := otel .InitGlobalTracerProvider (otelOpts )
95+ if err != nil {
96+ log .Warn ("telemetry disabled: failed to init tracer provider: " , err )
97+ return
98+ }
99+ otelShutdownFuncs = append (otelShutdownFuncs , tracerShutdown )
100+
88101 log .Info ("telemetry enabled, exporting to " , otelOpts .Endpoint )
89102
90103 metrics .SetupMetricsManager (geoCityURL , cityDatabaseName )
91104}
92105
106+ func shutdownOtel () {
107+ for _ , shutdown := range otelShutdownFuncs {
108+ shutdown ()
109+ }
110+ }
111+
93112func main () {
113+ defer shutdownOtel ()
94114 if err := rootCmd .Execute (); err != nil {
95115 fmt .Println (err )
96116 os .Exit (1 )
0 commit comments