feedback/internal/app/shutdown.go
2023-04-20 07:03:21 +05:00

34 lines
842 B
Go

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()
}