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"
|
2023-07-03 11:40:20 +00:00
|
|
|
"penahub.gitlab.yandexcloud.net/backend/verification/internal/server"
|
2023-06-12 14:19:10 +00:00
|
|
|
"syscall"
|
|
|
|
)
|
|
|
|
|
2024-05-26 15:32:07 +00:00
|
|
|
func gracefulShutdown(ctx context.Context, logger *zap.Logger, httpSrv *server.Server, 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")
|
|
|
|
}
|
|
|
|
|
2024-05-26 15:32:07 +00:00
|
|
|
if err := httpSrv.Shutdown(ctx); err != nil {
|
2023-06-12 14:19:10 +00:00
|
|
|
logger.Error("HttpServerShutdown", zap.Error(err))
|
|
|
|
}
|
|
|
|
|
2024-02-11 13:03:28 +00:00
|
|
|
if err := mongoDB.Client().Disconnect(ctx); err != nil {
|
2023-07-17 21:16:55 +00:00
|
|
|
logger.Error("MongoDB", zap.Error(err))
|
2023-06-12 14:19:10 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|