0
Fork 0
mirror of https://github.com/caddyserver/caddy.git synced 2024-12-23 22:27:38 -05:00

Merge pull request #725 from tpng/reload-validate-caddyfile

revert to old Caddyfile on failed in-process restart
This commit is contained in:
Benny Ng 2016-04-05 20:07:48 +08:00
commit 31062dd6c2
2 changed files with 19 additions and 2 deletions

View file

@ -182,8 +182,18 @@ func restartInProc(newCaddyfile Input) error {
return err return err
} }
caddyfileMu.Lock()
oldCaddyfile := caddyfile
caddyfileMu.Unlock()
err = Start(newCaddyfile) err = Start(newCaddyfile)
if err != nil { if err != nil {
// revert to old Caddyfile
if oldErr := Start(oldCaddyfile); oldErr != nil {
log.Printf("[ERROR] Restart: in-process restart failed and cannot revert to old Caddyfile: %v", oldErr)
} else {
wg.Done() // take down our barrier
}
return err return err
} }

View file

@ -7,11 +7,12 @@ import "log"
func Restart(newCaddyfile Input) error { func Restart(newCaddyfile Input) error {
log.Println("[INFO] Restarting") log.Println("[INFO] Restarting")
caddyfileMu.Lock()
oldCaddyfile := caddyfile
if newCaddyfile == nil { if newCaddyfile == nil {
caddyfileMu.Lock()
newCaddyfile = caddyfile newCaddyfile = caddyfile
caddyfileMu.Unlock()
} }
caddyfileMu.Unlock()
wg.Add(1) // barrier so Wait() doesn't unblock wg.Add(1) // barrier so Wait() doesn't unblock
@ -22,6 +23,12 @@ func Restart(newCaddyfile Input) error {
err = Start(newCaddyfile) err = Start(newCaddyfile)
if err != nil { if err != nil {
// revert to old Caddyfile
if oldErr := Start(oldCaddyfile); oldErr != nil {
log.Printf("[ERROR] Restart: in-process restart failed and cannot revert to old Caddyfile: %v", oldErr)
} else {
wg.Done() // take down our barrier
}
return err return err
} }