multi: wrap logger to request shutdown from signal on critical error

This commit adds a shutdown logger which will send a request for
shutdown on critical errors. It uses the signal package to request safe
shutdown of the daemon. Since we init our logs in config validation,
we add a started channel to the signal package to prevent the case where
we have a critical log after the ShutdownLogger has started but before
the daemon has started listening for intercepts. In this case, we just
ignore the shutdown request.
This commit is contained in:
carla
2020-08-24 08:54:34 +02:00
parent c3821e5ad1
commit daae8a9944
6 changed files with 98 additions and 6 deletions

View File

@@ -54,7 +54,10 @@ func Start(extraArgs string, unlockerReady, rpcReady Callback) {
}
// Hook interceptor for os signals.
signal.Intercept()
if err := signal.Intercept(); err != nil {
_, _ = fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
// Set up channels that will be notified when the RPC servers are ready
// to accept calls.