Skip to content

Commit f88c272

Browse files
committed
shutdown funcs
1 parent 6f02d72 commit f88c272

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

cmd/main.go

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ var (
3030
commit string
3131
)
3232

33+
var otelShutdownFuncs []func()
34+
3335
var 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+
93112
func main() {
113+
defer shutdownOtel()
94114
if err := rootCmd.Execute(); err != nil {
95115
fmt.Println(err)
96116
os.Exit(1)

0 commit comments

Comments
 (0)