Bug 129146

Summary: [rc.d] named and ntpd start order in rc.d
Product: Base System Reporter: Nerius Landys <nlandys>
Component: confAssignee: Doug Barton <dougb>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: 7.0-RELEASE   
Hardware: Any   
OS: Any   

Description Nerius Landys 2008-11-24 20:00:19 UTC
I am having a problem when ntpd starts at bootup.  It continues to have 2 processes running, the process which does the DNS lookup fails to exit (I believe), and ntpd fails to adjust the clock even after days of running.  Immediately after bootup and several hours or days later this is what I get:

# ps -U root | grep ntpd
87837  ??  Ss     0:00.03 /usr/sbin/ntpd -c /etc/ntp.conf -p /var/run/ntpd.pid
87838  ??  S      0:00.00 /usr/sbin/ntpd -c /etc/ntp.conf -p /var/run/ntpd.pid

If I do a "/etc/rc.d/ntpd restart" on a running system it fixes the problem, and only one of the ntpd processes remains, and the clock gets adjusted.

Fix: 

I don't have a 100% fix for this problem, and I am unable to test my suggested fix below because it's too dangerous to do on my running server.  An expert will know the elegant fix to this problem; below is only a guess/suggestion.

I believe that the fix for this is to add a dependency to /etc/rc.d/ntpd script, adding "named" to "REQUIRE" section in comments.  In your opinion, is this a robust fix?  For example the line in my /etc/rc.d/ntpd script that looks like so:

# REQUIRE: DAEMON ntpdate cleanvar devfs

would be changed to this:

# REQUIRE: DAEMON ntpdate cleanvar devfs named
How-To-Repeat: I have named running as a caching name server on my system.  The contents of my /etc/resolv.conf:

domain  nerius.com
nameserver      127.0.0.1

My /etc/rc.conf:

..
named_enable="YES"
ntpd_enable="YES"
..

I believe that the problem with ntpd is that named is started AFTER ntpd.

Trying to reproduce problem.  On a running system. I shut down named.  Then I restart ntpd, then I start named.  I can reproduce the problem that happens on bootup - ntpd has 2 processes and does not adjust the clock.  Restarting ntpd while named is running fixes the problem.
Comment 1 Gavin Atkinson freebsd_committer freebsd_triage 2008-11-27 22:27:03 UTC
Responsible Changed
From-To: freebsd-bugs->freebsd-rc

Over to maintainers
Comment 2 John Marshall 2008-11-28 00:35:14 UTC
Nerius,

Thank you for your report.

The startup (rc) ordering of the named and ntpd components is correct.
You have looked at the REQUIRE line in the ntpd script.  If you look at
the REQUIRE line in the ntpdate script you will see that it requires
named.  The way this works is that ntpd requires ntpdate which requires
named.  You need to follow the chain back to get the picture.
Dependencies in 7.0-RELEASE result in the following startup (rc) order
(of pertinent components):

/etc/rc.d/named
/etc/rc.d/ntpdate
/etc/rc.d/ntpd

Perhaps you have a situation where the Internet is not available until
after your system has started, so named is unable to resolve the
hostnames for ntpd in time?  In such a case you are probably best either
using IP addresses for servers in ntp.conf or re-starting ntpd later on
(as you are doing).  In any case, your problem is not rc order but the
inability of your named to resolve queries (for whatever reason) during
startup.

There is no problem with the rc order.  The order you desire already
exists.

I suggest that this PR can be closed.

-- 
John Marshall
Comment 3 Doug Barton freebsd_committer freebsd_triage 2009-01-10 04:08:30 UTC
State Changed
From-To: open->closed


Mr. Marshall's analysis is correct. 


Comment 4 Doug Barton freebsd_committer freebsd_triage 2009-01-10 04:08:30 UTC
Responsible Changed
From-To: freebsd-rc->dougb


I twiddle named and rc.d bits