diff --git a/opencloud/cmd/opencloud/main.go b/opencloud/cmd/opencloud/main.go index 7968efc1d..c80d4aca9 100644 --- a/opencloud/cmd/opencloud/main.go +++ b/opencloud/cmd/opencloud/main.go @@ -3,6 +3,7 @@ package main import ( "fmt" "os" + "time" "github.com/opencloud-eu/opencloud/opencloud/pkg/command" ) @@ -12,4 +13,10 @@ func main() { fmt.Fprintln(os.Stderr, err.Error()) os.Exit(1) } + // INFO: this is a hotfix, we need to replace suture and wait for nats to + // gracefully shutdown using rungroups + // see https://github.com/opencloud-eu/opencloud/issues/2282 + fmt.Println("Waiting for 30 seconds before exiting...") + time.Sleep(30 * time.Second) + fmt.Println("Exiting...") } diff --git a/services/nats/pkg/command/server.go b/services/nats/pkg/command/server.go index b47a93e5b..15ca1e737 100644 --- a/services/nats/pkg/command/server.go +++ b/services/nats/pkg/command/server.go @@ -5,6 +5,7 @@ import ( "crypto/tls" "fmt" "os/signal" + "time" "github.com/urfave/cli/v2" @@ -91,7 +92,13 @@ func Server(cfg *config.Config) *cli.Command { gr.Add(runner.New(cfg.Service.Name+".svc", func() error { return natsServer.ListenAndServe() }, func() { + // INFO: this is a hotfix, we need to replace suture and wait for nats to + // gracefully shutdown using rungroups + // see https://github.com/opencloud-eu/opencloud/issues/2282 + logger.Info().Msg("Gracefully shutting down the NATS server...") natsServer.Shutdown() + time.Sleep(5 * time.Second) // wait for the server to shutdown gracefully + logger.Info().Msg("NATS server shutdown") })) grResults := gr.Run(ctx)