plugin/ready: fix starts and restarts (#2814)
Add OnRestartFailed to the ready plugin and some various cleanups. Document slightly better how things are supposed to work with multiple `ready`'s in the multiple Server Blocks. All manually tested with this Corefile: ~~~ . { log ready } example.org { log chaos ready } ~~~ And then `kill -SIGUSR1` and curling the ready endpoint. This works well, the FailedReload is triggered by adding a syntax error in the Corefile. See #2659 Signed-off-by: Miek Gieben <miek@miek.nl>
This commit is contained in:
parent
bd83f74deb
commit
a1c97f82a6
4 changed files with 20 additions and 23 deletions
|
@ -21,22 +21,25 @@ func setup(c *caddy.Controller) error {
|
|||
if err != nil {
|
||||
return plugin.Error("ready", err)
|
||||
}
|
||||
|
||||
rd := &ready{Addr: addr}
|
||||
|
||||
uniqAddr.Set(addr, rd.onStartup)
|
||||
c.OnStartup(func() error { uniqAddr.Set(addr, rd.onStartup); return nil })
|
||||
c.OnRestartFailed(func() error { uniqAddr.Set(addr, rd.onStartup); return nil })
|
||||
|
||||
c.OncePerServerBlock(func() error {
|
||||
c.OnStartup(func() error {
|
||||
return uniqAddr.ForEach()
|
||||
})
|
||||
return nil
|
||||
})
|
||||
c.OnStartup(func() error { return uniqAddr.ForEach() })
|
||||
c.OnRestartFailed(func() error { return uniqAddr.ForEach() })
|
||||
|
||||
c.OnStartup(func() error {
|
||||
// Each plugin in this server block will (if they support it) report readiness.
|
||||
plugs := dnsserver.GetConfig(c).Handlers()
|
||||
for _, p := range plugs {
|
||||
for _, p := range dnsserver.GetConfig(c).Handlers() {
|
||||
if r, ok := p.(Readiness); ok {
|
||||
plugins.Append(r, p.Name())
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
c.OnRestartFailed(func() error {
|
||||
for _, p := range dnsserver.GetConfig(c).Handlers() {
|
||||
if r, ok := p.(Readiness); ok {
|
||||
plugins.Append(r, p.Name())
|
||||
}
|
||||
|
@ -44,14 +47,14 @@ func setup(c *caddy.Controller) error {
|
|||
return nil
|
||||
})
|
||||
|
||||
c.OnRestart(rd.onRestart)
|
||||
c.OnRestart(rd.onFinalShutdown)
|
||||
c.OnFinalShutdown(rd.onFinalShutdown)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func parse(c *caddy.Controller) (string, error) {
|
||||
addr := ""
|
||||
addr := ":8181"
|
||||
i := 0
|
||||
for c.Next() {
|
||||
if i > 0 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue