Defer в main функции gRPC сервиса
Не отрабатывает функция defer в главном потоке, в котором инициализирован gRPC сервис:
func main() {
...
work, err := work.InitWork()
if err != nil {
panic(err)
}
work.Start()
defer work.Finish()
...
listener, err := net.Listen("tcp", addr)
if err != nil {
panic(err)
}
pb.RegisterServer(grpcServer, srv)
log.Print("Server is starting %s ... ", addr)
if err := grpcServer.Serve(listener); err != nil {
panic(err)
}
}
Код метода work.Finish():
func (w *Work) Finish() {
log.Print("Stopping ...")
w.wg.Wait()
log.Print("Stopped")
}
Когда происходит остановка главного потока в логах не наблюдаю сообщений об остановке работ.