erigon-pulse/turbo/debug/signal_windows.go
ledgerwatch a9c86ab887
[devnet] Always select first node, fix configuration mess up between nodes (#7863)
Co-authored-by: Alex Sharp <alexsharp@Alexs-MacBook-Pro-2.local>
2023-07-10 11:37:55 +01:00

34 lines
644 B
Go

//go:build windows
package debug
import (
"io"
"os"
"os/signal"
_debug "github.com/ledgerwatch/erigon/common/debug"
"github.com/ledgerwatch/log/v3"
)
func ListenSignals(stack io.Closer, logger log.Logger) {
sigc := make(chan os.Signal, 1)
signal.Notify(sigc, os.Interrupt)
_debug.GetSigC(&sigc)
defer signal.Stop(sigc)
<-sigc
logger.Info("Got interrupt, shutting down...")
if stack != nil {
go stack.Close()
}
for i := 10; i > 0; i-- {
<-sigc
if i > 1 {
logger.Warn("Already shutting down, interrupt more to panic.", "times", i-1)
}
}
Exit() // ensure trace and CPU profile data is flushed.
LoudPanic("boom")
}