summaryrefslogtreecommitdiff
path: root/caddy.go
diff options
context:
space:
mode:
authorCarl George <carl@george.computer>2021-04-05 15:01:20 -0500
committerGitHub <noreply@github.com>2021-04-05 14:01:20 -0600
commit45fb7202ac0e606ccb7b4fe95f169424f0a6cabc (patch)
treebaa42e2399a69f7f65f487406cac16b977cfe827 /caddy.go
parent66783eb4d966c01e3ecdcd456fa4a205de9c560b (diff)
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 'caddy.go')
-rw-r--r--caddy.go11
1 files changed, 11 insertions, 0 deletions
diff --git a/caddy.go b/caddy.go
index 46d8531..96dfea5 100644
--- a/caddy.go
+++ b/caddy.go
@@ -32,6 +32,7 @@ import (
"sync"
"time"
+ "github.com/caddyserver/caddy/v2/notify"
"github.com/caddyserver/certmagic"
"github.com/google/uuid"
"go.uber.org/zap"
@@ -100,6 +101,16 @@ func Run(cfg *Config) error {
// if it is different from the current config or
// forceReload is true.
func Load(cfgJSON []byte, forceReload bool) error {
+ if err := notify.NotifyReloading(); err != nil {
+ Log().Error("unable to notify reloading to service manager", zap.Error(err))
+ }
+
+ defer func() {
+ if err := notify.NotifyReadiness(); err != nil {
+ Log().Error("unable to notify readiness to service manager", zap.Error(err))
+ }
+ }()
+
return changeConfig(http.MethodPost, "/"+rawConfigKey, cfgJSON, forceReload)
}