mirror of
https://github.com/coredns/coredns.git
synced 2025-11-11 14:32:25 -05:00
plugin/{file,auto}: drop fsnotify (#1090)
* plugin/{file,auto}: drop fsnotify
Reload every minute. This is more deterministic then fsnotify. Also
other thing cropped up: sharing zone files between zone; there is only
1 fsnotify event and we need to fan out the reload to all zone files.
This is a large rewrite (which could still be done), for now, poll the
zone file on disk.
Give serial no change a special error type so we can check for this.
Improve the logging for reloading:
2017/09/19 07:34:39 [INFO] Successfully reloaded zone "miek.nl." in "db.miek.nl" with serial 128263060
2017/09/19 07:34:45 [INFO] Successfully reloaded zone "miek.nl." in "db.miek.nl" with serial 128263059
2017/09/19 07:34:51 [INFO] Successfully reloaded zone "miek.nl." in "db.miek.nl" with serial 128263060
Fixes #1013
* typo
This commit is contained in:
@@ -105,6 +105,17 @@ func (f File) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (i
|
||||
// Name implements the Handler interface.
|
||||
func (f File) Name() string { return "file" }
|
||||
|
||||
type serialErr struct {
|
||||
err string
|
||||
zone string
|
||||
origin string
|
||||
serial int64
|
||||
}
|
||||
|
||||
func (s *serialErr) Error() string {
|
||||
return fmt.Sprintf("%s for origin %s in file %s, with serial %d", s.err, s.zone, s.serial)
|
||||
}
|
||||
|
||||
// Parse parses the zone in filename and returns a new Zone or an error.
|
||||
// If serial >= 0 it will reload the zone, if the SOA hasn't changed
|
||||
// it returns an error indicating nothing was read.
|
||||
@@ -119,8 +130,8 @@ func Parse(f io.Reader, origin, fileName string, serial int64) (*Zone, error) {
|
||||
|
||||
if !seenSOA && serial >= 0 {
|
||||
if s, ok := x.RR.(*dns.SOA); ok {
|
||||
if s.Serial == uint32(serial) { // same zone
|
||||
return nil, fmt.Errorf("no change in serial: %d", serial)
|
||||
if s.Serial == uint32(serial) { // same serial
|
||||
return nil, &serialErr{err: "no change in SOA serial", origin: origin, zone: fileName, serial: serial}
|
||||
}
|
||||
seenSOA = true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user