From: | "Timothe Litt" <litt@acm.org> |
Subject: | Spurious "zone may fail to transfer" log entries |
Date: | Sun, 6 Aug 2017 07:59:05 -0400 |
To: | "bind9-bugs" <bind9-bugs@isc.org> |
bind 9.11.1-P2.
named seems to be too aggressive in producing "zone serial
unchanged. zone may fail to transfer to slaves" messages.
A burst of these messages got me to do some investigation.
rndc freeze; sleep 5; rndc thaw
This resulted in syslog messages of the form:
zone 135.168.192.IN-ADDR.ARPA/IN/internal: zone serial (2017072000) unchanged. zone may fail to transfer to slaves. from a subset of dynamic zones. It is true that the serial didn't change. But neither did the zone contents. Repeating the freeze/thaw command does not produce additional messages. Next, I added a (TXT) record to a zone with UPDATE. Repeat freeze/thaw; no message. However, after waiting about a minute and repeating the grep: that message appeared for the zone. Deleting the record follows the same pattern; freeze/thaw + delay results in 'zone may fail to transfer'. Looking into the code, the message comes from lib/dns/zone.c: zone_postload(). zone_load() attempts to prevent loading if the master file has not been modified (!zone_touched()). zone_touched() uses zone->loadtime/include->filetime and the master file's mtime to determine whether the zone data file has been modified since load. I didn't track this back further, but from the symptoms I suspect that applying the journal is not updating zone->loadtime/include->filetime. Thus, zone_load() would conclude that the file has been modified, and after the load, zone_postload notes that the serial hasn't changed. If I'm correct, applying the journal & writing a new zone data file should set those fields in the zone structure to the data file's new mtime(). Although the data file's mtime and contents change, the pre-freeze file + journal has the same contents as the post-freeze file. Both match the zone data in memory. So updating the zone structure's idea of load time would correctly reflect the state. Nit: In the message, "zone may fail ..." should be "Zone may fail". (Though perhaps fixing that would confuse log file scanners.)
-- Timothe Litt ACM Distinguished Engineer -------------------------- This communication may not represent the ACM or my employer's views, if any, on the matters discussed.
Message body not shown because it is not plain text.