in runner/server.go [60:83]
func registerGracefulShutdown(server *grpc.Server, store shared.StoragePlugin, logger hclog.Logger) *sync.WaitGroup {
signals := make(chan os.Signal, 1)
signal.Notify(signals, os.Interrupt, syscall.SIGTERM)
wg := &sync.WaitGroup{}
wg.Add(1)
go func() {
sig := <-signals
logger.Info("received signal, attempting gracefully stop server and plugin", "signal", sig)
server.GracefulStop()
// perform cleanup logic on writer
c, ok := store.SpanWriter().(io.Closer)
if ok {
_ = c.Close()
}
logger.Info("server stopped")
wg.Done()
}()
return wg
}