func registerGracefulShutdown()

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
}