aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modules/graceful/manager.go1
-rw-r--r--modules/graceful/manager_unix.go8
2 files changed, 7 insertions, 2 deletions
diff --git a/modules/graceful/manager.go b/modules/graceful/manager.go
index 031c10d41b..f783573607 100644
--- a/modules/graceful/manager.go
+++ b/modules/graceful/manager.go
@@ -193,6 +193,7 @@ func (g *Manager) RunAtHammer(hammer func()) {
func (g *Manager) doShutdown() {
if !g.setStateTransition(stateRunning, stateShuttingDown) {
+ g.DoImmediateHammer()
return
}
g.lock.Lock()
diff --git a/modules/graceful/manager_unix.go b/modules/graceful/manager_unix.go
index fcbb16a3bb..99e84d73e8 100644
--- a/modules/graceful/manager_unix.go
+++ b/modules/graceful/manager_unix.go
@@ -168,8 +168,12 @@ func (g *Manager) DoGracefulRestart() {
if setting.GracefulRestartable {
log.Info("PID: %d. Forking...", os.Getpid())
err := g.doFork()
- if err != nil && err.Error() != "another process already forked. Ignoring this one" {
- log.Error("Error whilst forking from PID: %d : %v", os.Getpid(), err)
+ if err != nil {
+ if err.Error() == "another process already forked. Ignoring this one" {
+ g.DoImmediateHammer()
+ } else {
+ log.Error("Error whilst forking from PID: %d : %v", os.Getpid(), err)
+ }
}
} else {
log.Info("PID: %d. Not set restartable. Shutting down...", os.Getpid())