[nsd-users] NSD serves old serial after restart

Anand Buddhdev anandb at ripe.net
Wed Aug 17 12:29:55 UTC 2022


On 17/08/2022 14:08, Klaus Darilion wrote:

Hi Klaus,

> That's the weird thing. NSD knows that the version on disk is older
> than the previously served one (serial is goind backwards: "1660716050
> is updated to 1660716049"). Hence it could check the serial on the
> primary and fetch the latest version.

Except that NSD keeps a state file as well, in which it maintains timers 
about when next to query the primary. For this zone, that time had not 
yet arrived.

If you stop NSD, delete the state file, and start NSD, then it will have 
no memory of the timers. After loading all the zones, it will 
immediately query their primaries and update them if needed. But this 
has the downside of causing a thundering herd towards the primaries in 
the case where you have lots of secondary zones.

> I also tried "nsd-control transfer ....", but that also did not
> triggered an XFR. Only "force_transfer" triggered an XFR. From my
> understanding, "transfer: try to update slave zones to newer serial"
> should also trigger an XFR as the primary has a higher serial then the
> current served one.

Hmm. So NSD thinks the zone is up to date, because it has a newer serial 
in the state file, but is actually serving an old serial. Could be a 
subtle bug. I'll see if I can reproduce it on our test server.

Regards,
Anand


More information about the nsd-users mailing list