GODT-1913: pass reporter to gluon, limit restarts, add crash handlers.

This commit is contained in:
Jakub
2022-10-21 18:41:31 +02:00
committed by James Houlahan
parent 31fb878bbd
commit ae87d7b236
28 changed files with 811 additions and 34 deletions

View File

@ -28,6 +28,7 @@ import (
)
const BridgeCrashCount = "BRIDGE_CRASH_COUNT"
const MaxCrashRestarts = 10
type Restarter struct {
restart bool
@ -72,14 +73,29 @@ func (restarter *Restarter) Restart() {
}
cmd := execabs.Command(restarter.exe, xslices.Join(os.Args[1:], restarter.flags)...) //nolint:gosec
l := logrus.WithFields(logrus.Fields{
"exe": restarter.exe,
"crashCount": env[BridgeCrashCount],
"args": cmd.Args,
})
if nCrash, err := strconv.Atoi(env[BridgeCrashCount]); err != nil {
l.WithError(err).Error("Crash count is not integer, ignoring")
return
} else if nCrash >= MaxCrashRestarts {
l.Error("Crash count is too high, ignoring")
return
}
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Env = getEnvList(env)
l.Warn("Restarting")
if err := run(cmd); err != nil {
logrus.WithError(err).Error("Failed to restart")
l.WithError(err).Error("Failed to restart")
}
}