diff options
author | Carl George <[email protected]> | 2021-04-05 15:01:20 -0500 |
---|---|---|
committer | GitHub <[email protected]> | 2021-04-05 14:01:20 -0600 |
commit | 45fb7202ac0e606ccb7b4fe95f169424f0a6cabc (patch) | |
tree | baa42e2399a69f7f65f487406cac16b977cfe827 /admin.go | |
parent | 66783eb4d966c01e3ecdcd456fa4a205de9c560b (diff) | |
download | caddy-45fb7202ac0e606ccb7b4fe95f169424f0a6cabc.tar.gz caddy-45fb7202ac0e606ccb7b4fe95f169424f0a6cabc.zip |
notify: Send all sd_notify signals from main caddy process (#4060)
Initial sd_notify support was added in #3963, but that sent signals from
both cmdRun and cmdReload. This approach has two drawbacks:
- Reloads initiated via the API do not send signals.
- The signals are sent from different processes, which requires the
`NotifyAccess=exec` directive in the unit file.
This change moves the NotifyReloading and NotifyReadiness invocations to
Load, which address both of those drawbacks. It also adds a
complimentary NotifyStopping method which is invoked from handleStop.
All the notify methods are defined in a notify package to avoid an
import loop.
Diffstat (limited to 'admin.go')
-rw-r--r-- | admin.go | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -39,6 +39,7 @@ import ( "sync" "time" + "github.com/caddyserver/caddy/v2/notify" "github.com/caddyserver/certmagic" "github.com/prometheus/client_golang/prometheus" "go.uber.org/zap" @@ -905,6 +906,11 @@ func handleStop(w http.ResponseWriter, r *http.Request) error { Err: fmt.Errorf("method not allowed"), } } + + if err := notify.NotifyStopping(); err != nil { + Log().Error("unable to notify stopping to service manager", zap.Error(err)) + } + exitProcess(Log().Named("admin.api")) return nil } |