From 298b860a97481630ec65698ab0465675bf58b43a Mon Sep 17 00:00:00 2001 From: Ruslan Drozhdzh <30860269+rdrozhdzh@users.noreply.github.com> Date: Tue, 9 Oct 2018 22:50:30 +0300 Subject: [PATCH] plugin/forward: fix healthchecker crash (#2165) --- plugin/forward/forward.go | 3 +++ plugin/forward/health.go | 1 + plugin/forward/proxy.go | 5 +++++ 3 files changed, 9 insertions(+) diff --git a/plugin/forward/forward.go b/plugin/forward/forward.go index 2b6a3f705..dfa1aaca1 100644 --- a/plugin/forward/forward.go +++ b/plugin/forward/forward.go @@ -12,12 +12,15 @@ import ( "github.com/coredns/coredns/plugin" "github.com/coredns/coredns/plugin/debug" + clog "github.com/coredns/coredns/plugin/pkg/log" "github.com/coredns/coredns/request" "github.com/miekg/dns" ot "github.com/opentracing/opentracing-go" ) +var log = clog.NewWithPlugin("forward") + // Forward represents a plugin instance that can proxy requests to another (DNS) server. It has a list // of proxies each representing one upstream proxy. type Forward struct { diff --git a/plugin/forward/health.go b/plugin/forward/health.go index a64b74122..4512d96c8 100644 --- a/plugin/forward/health.go +++ b/plugin/forward/health.go @@ -31,6 +31,7 @@ func NewHealthChecker(trans string) HealthChecker { return &dnsHc{c: c} } + log.Warningf("No healthchecker for transport %q", trans) return nil } diff --git a/plugin/forward/proxy.go b/plugin/forward/proxy.go index 453dd015b..fbe79cd69 100644 --- a/plugin/forward/proxy.go +++ b/plugin/forward/proxy.go @@ -50,6 +50,11 @@ func (p *Proxy) SetExpire(expire time.Duration) { p.transport.SetExpire(expire) // Healthcheck kicks of a round of health checks for this proxy. func (p *Proxy) Healthcheck() { + if p.health == nil { + log.Warning("No healthchecker") + return + } + p.probe.Do(func() error { return p.health.Check(p) })