From 20e16491ec7495adc07aef7d506463f15a2b6733 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Tue, 5 Apr 2016 07:37:05 +0100 Subject: [PATCH] Add more logging Put some more logging in CoreDNS. --- middleware/etcd/handler.go | 1 - middleware/etcd/lookup.go | 2 +- middleware/file/notify.go | 11 +++++++---- middleware/file/secondary.go | 7 +++++-- middleware/file/xfr.go | 7 +++---- middleware/file/zone.go | 1 + middleware/loadbalance/loadbalance.go | 8 +++++++- middleware/zone.go | 1 - 8 files changed, 24 insertions(+), 14 deletions(-) diff --git a/middleware/etcd/handler.go b/middleware/etcd/handler.go index 55a5d0fa8..8ffc0c64f 100644 --- a/middleware/etcd/handler.go +++ b/middleware/etcd/handler.go @@ -83,7 +83,6 @@ func (e Etcd) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (i m.Ns = []dns.RR{e.SOA(zone, state)} state.W.WriteMsg(m) return dns.RcodeSuccess, nil - } if len(records) > 0 { m.Answer = append(m.Answer, records...) diff --git a/middleware/etcd/lookup.go b/middleware/etcd/lookup.go index c996b986c..794461097 100644 --- a/middleware/etcd/lookup.go +++ b/middleware/etcd/lookup.go @@ -73,7 +73,7 @@ func (e Etcd) A(zone string, state middleware.State, previousRecords []dns.RR) ( case ip.To4() != nil: records = append(records, serv.NewA(state.QName(), ip.To4())) case ip.To4() == nil: - // noda? + // nodata? } } return records, nil diff --git a/middleware/file/notify.go b/middleware/file/notify.go index bbdafe022..6667fb05d 100644 --- a/middleware/file/notify.go +++ b/middleware/file/notify.go @@ -2,6 +2,7 @@ package file import ( "fmt" + "log" "github.com/miekg/coredns/middleware" @@ -21,9 +22,12 @@ func notify(zone string, to []string) error { m.SetNotify(zone) c := new(dns.Client) - // TODO(miek): error handling? Run this in a goroutine? for _, t := range to { - notifyAddr(c, m, t) + if err := notifyAddr(c, m, t); err != nil { + log.Printf("[ERROR] " + err.Error()) + } else { + log.Printf("[INFO] Sent notify for zone %s to %s", zone, t) + } } return nil } @@ -34,7 +38,6 @@ func notifyAddr(c *dns.Client, m *dns.Msg, s string) error { if err == nil && ret.Rcode == dns.RcodeSuccess || ret.Rcode == dns.RcodeNotImplemented { return nil } - // timeout? mean don't want it. should stop sending as well? } - return fmt.Errorf("failed to send notify for zone '%s' to '%s'", m.Question[0].Name, s) + return fmt.Errorf("Failed to send notify for zone '%s' to '%s'", m.Question[0].Name, s) } diff --git a/middleware/file/secondary.go b/middleware/file/secondary.go index b55052034..53e66cebe 100644 --- a/middleware/file/secondary.go +++ b/middleware/file/secondary.go @@ -20,13 +20,13 @@ Transfer: for _, tr := range z.TransferFrom { c, err := t.In(m, tr) if err != nil { - log.Printf("[ERROR] failed to setup transfer %s with %s: %v", z.name, z.TransferFrom[0], err) + log.Printf("[ERROR] Failed to setup transfer %s with %s: %v", z.name, z.TransferFrom[0], err) Err = err continue Transfer } for env := range c { if env.Error != nil { - log.Printf("[ERROR] failed to parse transfer %s: %v", z.name, env.Error) + log.Printf("[ERROR] Failed to parse transfer %s: %v", z.name, env.Error) Err = env.Error continue Transfer } @@ -44,6 +44,9 @@ Transfer: } } } + if Err != nil { + log.Printf("[ERROR] Failed to transfer %s", z.name) + } return nil return Err // ignore errors for now. TODO(miek) } diff --git a/middleware/file/xfr.go b/middleware/file/xfr.go index 5ef205f6e..ed1862451 100644 --- a/middleware/file/xfr.go +++ b/middleware/file/xfr.go @@ -22,10 +22,10 @@ func (x Xfr) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (in return dns.RcodeServerFailure, nil } if state.QType() != dns.TypeAXFR { - return 0, fmt.Errorf("file: xfr called with non transfer type: %d", state.QType()) + return 0, fmt.Errorf("xfr called with non transfer type: %d", state.QType()) } if state.Proto() == "udp" { - return 0, fmt.Errorf("file: xfr called with udp") + return 0, fmt.Errorf("xfr called with udp") } records := x.All() @@ -57,5 +57,4 @@ func (x Xfr) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (in return dns.RcodeSuccess, nil } -//const transferLength = 10e3 // Start a new envelop after message reaches this size. -const transferLength = 100 // Start a new envelop after message reaches this size. +const transferLength = 100 // Start a new envelop after message reaches this size. Intentionally small to test multi envelope parsing diff --git a/middleware/file/zone.go b/middleware/file/zone.go index c3567b45f..3d291ba33 100644 --- a/middleware/file/zone.go +++ b/middleware/file/zone.go @@ -38,6 +38,7 @@ func (z *Zone) TransferAllowed(state middleware.State) bool { return true } } + // TODO(miek): future matching against IP/CIDR notations return false } diff --git a/middleware/loadbalance/loadbalance.go b/middleware/loadbalance/loadbalance.go index e1bee25fd..eb5abf62b 100644 --- a/middleware/loadbalance/loadbalance.go +++ b/middleware/loadbalance/loadbalance.go @@ -1,6 +1,10 @@ package loadbalance -import "github.com/miekg/dns" +import ( + "log" + + "github.com/miekg/dns" +) type RoundRobinResponseWriter struct { dns.ResponseWriter @@ -16,6 +20,7 @@ func (r *RoundRobinResponseWriter) WriteMsg(res *dns.Msg) error { } res.Answer = roundRobin(res.Answer) + res.Ns = roundRobin(res.Ns) res.Extra = roundRobin(res.Extra) return r.ResponseWriter.WriteMsg(res) @@ -61,6 +66,7 @@ func roundRobin(in []dns.RR) []dns.RR { // Should we pack and unpack here to fiddle with the packet... Not likely. func (r *RoundRobinResponseWriter) Write(buf []byte) (int, error) { + log.Printf("[WARNING] RoundRobin called with Write: no shuffling records") n, err := r.ResponseWriter.Write(buf) return n, err } diff --git a/middleware/zone.go b/middleware/zone.go index 85a9d438e..46c17b62d 100644 --- a/middleware/zone.go +++ b/middleware/zone.go @@ -29,5 +29,4 @@ func (z Zones) FullyQualify() { for i, _ := range z { z[i] = dns.Fqdn(z[i]) } - }