feat_: graceful shutdown with status-backend (#6189)

* fix_: graceful shutdown node in status-backend

* fix_: function doc
This commit is contained in:
Igor Sirotin 2024-12-10 19:58:30 +00:00 committed by GitHub
parent e6c2f89f03
commit 8b95c81488
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 17 additions and 0 deletions

View File

@ -4,6 +4,8 @@ import (
"flag"
stdlog "log"
"os"
"os/signal"
"syscall"
"golang.org/x/crypto/ssh/terminal"
@ -13,6 +15,7 @@ import (
"github.com/status-im/status-go/internal/sentry"
"github.com/status-im/status-go/internal/version"
"github.com/status-im/status-go/logutils"
statusgo "github.com/status-im/status-go/mobile"
)
var (
@ -39,6 +42,7 @@ func main() {
defer sentry.Recover()
flag.Parse()
go handleInterrupts()
srv := server.NewServer()
srv.Setup()
@ -57,3 +61,16 @@ func main() {
srv.RegisterMobileAPI()
srv.Serve()
}
// handleInterrupts catches interrupt signal (SIGTERM/SIGINT) and
// gracefully logouts and stops the node.
func handleInterrupts() {
ch := make(chan os.Signal, 1)
signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
defer signal.Stop(ch)
receivedSignal := <-ch
logger.Info("interrupt signal received", "signal", receivedSignal)
_ = statusgo.Logout()
os.Exit(0)
}