[nsd-users] Old-main quit during quit sync

Otto Retter otto at relax.theregoesmy.email
Wed Jan 8 20:08:00 UTC 2025


Hi Willem,

> Indeed, NSD 4.8.0 did not log this condition as an error message and 
> just proceeded if the old-main would quit.
> 
> With 4.9.0 reloading was refactored to reap exited old serve childs in 
> order to reduce the number of "defunct" or "zombie" processes that can 
> emerge (for example when one old-serve child is still busy, for example 
> serving an AXFR or so).
> 
> When old-main is done with is job during reload (killing the old serve 
> children), it informs the reload process and then immediately exists. 
> The detection of the closed pipe (because of exited old-main) could very 
> well become before the information that old-main is done on that pipe on 
> some platforms.

Thank you for the fantastic explanation! The graphic is also very 
helpful for understanding the logic flow.

> So I consider this "reporting of an exited old-main" at this point in 
> the code a bug, and changed it into a debugging warning level message 
> here: https://github.com/NLnetLabs/nsd/pull/421
> 
> PS. For completeness a strip of a successful NSD reload below. Your 
> issue would occur if old-main(5) would exit before the load(2) process 
> received the NSD_RELOAD in picture 6.NSD successful reload

That makes sense given the previous information you provided. I look 
forward to running a future NSD version with that patch :-).

Cheers,
Otto




More information about the nsd-users mailing list