mirror of
https://github.com/coredns/coredns.git
synced 2025-10-31 18:23:13 -04:00
plugin/forward using pkg/up (#1493)
* plugin/forward: on demand healtchecking Only start doing health checks when we encouner an error (any error). This uses the new pluing/pkg/up package to abstract away the actual checking. This reduces the LOC quite a bit; does need more testing, unit testing and tcpdumping a bit. * fix tests * Fix readme * Use pkg/up for healthchecks * remove unused channel * more cleanups * update readme * * Again do go generate and go build; still referencing the wrong forward repo? Anyway fixed. * Use pkg/up for doing the healtchecks to cut back on unwanted queries * Change up.Func to return an error instead of a boolean. * Drop the string target argument as it doesn't make sense. * Add healthcheck test on failing to get an upstream answer. TODO(miek): double check Forward and Lookup and how they interact with HC, and if we correctly call close() on those * actual test * Tests here * more tests * try getting rid of host * Get rid of the host indirection * Finish removing hosts * moar testing * import fmt * field is not used * docs * move some stuff * bring back health_check * maxfails=0 test * git and merging, bah * review
This commit is contained in:
@@ -62,25 +62,14 @@ func setup(c *caddy.Controller) error {
|
||||
|
||||
// OnStartup starts a goroutines for all proxies.
|
||||
func (f *Forward) OnStartup() (err error) {
|
||||
if f.hcInterval == 0 {
|
||||
for _, p := range f.proxies {
|
||||
p.host.fails = 0
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
for _, p := range f.proxies {
|
||||
go p.healthCheck()
|
||||
p.start(f.hcInterval)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// OnShutdown stops all configured proxies.
|
||||
func (f *Forward) OnShutdown() error {
|
||||
if f.hcInterval == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
for _, p := range f.proxies {
|
||||
p.close()
|
||||
}
|
||||
@@ -88,9 +77,7 @@ func (f *Forward) OnShutdown() error {
|
||||
}
|
||||
|
||||
// Close is a synonym for OnShutdown().
|
||||
func (f *Forward) Close() {
|
||||
f.OnShutdown()
|
||||
}
|
||||
func (f *Forward) Close() { f.OnShutdown() }
|
||||
|
||||
func parseForward(c *caddy.Controller) (*Forward, error) {
|
||||
f := New()
|
||||
@@ -140,8 +127,8 @@ func parseForward(c *caddy.Controller) (*Forward, error) {
|
||||
}
|
||||
|
||||
// We can't set tlsConfig here, because we haven't parsed it yet.
|
||||
// We set it below at the end of parseBlock.
|
||||
p := NewProxy(h)
|
||||
// We set it below at the end of parseBlock, use nil now.
|
||||
p := NewProxy(h, nil /* no TLS */)
|
||||
f.proxies = append(f.proxies, p)
|
||||
}
|
||||
|
||||
@@ -200,17 +187,11 @@ func parseBlock(c *caddy.Controller, f *Forward) error {
|
||||
return fmt.Errorf("health_check can't be negative: %d", dur)
|
||||
}
|
||||
f.hcInterval = dur
|
||||
for i := range f.proxies {
|
||||
f.proxies[i].hcInterval = dur
|
||||
}
|
||||
case "force_tcp":
|
||||
if c.NextArg() {
|
||||
return c.ArgErr()
|
||||
}
|
||||
f.forceTCP = true
|
||||
for i := range f.proxies {
|
||||
f.proxies[i].forceTCP = true
|
||||
}
|
||||
case "tls":
|
||||
args := c.RemainingArgs()
|
||||
if len(args) != 3 {
|
||||
|
||||
Reference in New Issue
Block a user