package app import ( "go.etcd.io/bbolt" "go.uber.org/zap" "os" "os/signal" "penahub.gitlab.yandexcloud.net/backend/templategen_feedback/internal/initialize" "penahub.gitlab.yandexcloud.net/backend/templategen_feedback/internal/server" "syscall" ) func gracefulShutdown(logger *zap.Logger, httpSrv *server.HTTP, db *bbolt.DB, controllers *initialize.Controllers) { interrupt := make(chan os.Signal, 1) signal.Notify(interrupt, os.Interrupt, syscall.SIGTERM) killSignal := <-interrupt switch killSignal { case os.Interrupt: logger.Info("AppInterrupted") case syscall.SIGTERM: logger.Info("AppTerminated") } if err := httpSrv.Stop(); err != nil { logger.Error("HttpServerShutdown", zap.Error(err)) } if err := db.Close(); err != nil { logger.Error("BoltDB", zap.Error(err)) } controllers.Feedback.StopService() }