verification/internal/app/shutdown.go

33 lines
761 B
Go
Raw Normal View History

2023-06-12 14:19:10 +00:00
package app
import (
"context"
"go.mongodb.org/mongo-driver/mongo"
"go.uber.org/zap"
"os"
"os/signal"
"penahub.gitlab.yandexcloud.net/backend/verification/internal/server"
2023-06-12 14:19:10 +00:00
"syscall"
)
2024-02-11 13:03:28 +00:00
func gracefulShutdown(ctx context.Context, logger *zap.Logger, httpSrv *server.HTTP, mongoDB *mongo.Database) {
2023-06-12 14:19:10 +00:00
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))
}
2024-02-11 13:03:28 +00:00
if err := mongoDB.Client().Disconnect(ctx); err != nil {
logger.Error("MongoDB", zap.Error(err))
2023-06-12 14:19:10 +00:00
}
}