diff options
author | 2018-02-15 10:21:57 +0100 | |
---|---|---|
committer | 2018-02-15 10:21:57 +0100 | |
commit | 16504234e5f9f01c3b079be719082da4abb781a3 (patch) | |
tree | eefd5eb76a4ae6c7a77135371e7fff3b122da5fe /plugin/forward/setup.go | |
parent | 8b035fa938f94ed9bff3f44ee14daba34b13eafb (diff) | |
download | coredns-16504234e5f9f01c3b079be719082da4abb781a3.tar.gz coredns-16504234e5f9f01c3b079be719082da4abb781a3.tar.zst coredns-16504234e5f9f01c3b079be719082da4abb781a3.zip |
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
Diffstat (limited to 'plugin/forward/setup.go')
-rw-r--r-- | plugin/forward/setup.go | 27 |
1 files changed, 4 insertions, 23 deletions
diff --git a/plugin/forward/setup.go b/plugin/forward/setup.go index bed20f0c7..5231bcc22 100644 --- a/plugin/forward/setup.go +++ b/plugin/forward/setup.go @@ -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 { |