Hi.
I created module puppetd, which restart puppetd itself:

service { "puppetd":
                ensure     => running,
                enable     => true,
                path       => [ "/etc/rc.d",
                                "/usr/local/etc/rc.d" ],
                pattern   => "puppetd",
                hasstatus  => true,
                hasrestart => true;
        }

But in 80%, it doesn't work:
tail -f /var/log/messages
Jul 14 16:32:57 ac1 puppetd[580]: (//Node[ac1.masterhost.ru]/base_ac/puppetd/Service[puppetd]/enable) enable changed 'false' to 'true'
Jul 14 16:32:57 ac1 puppetd[580]: (//Node[ac1.masterhost.ru]/base_ac/puppetd/Service[puppetd]) Triggering 'refresh' from 1 dependencies
Jul 14 16:32:57 ac1 puppetd[580]: Caught TERM; shutting down
Jul 14 16:32:57 ac1 puppetd[580]: Shutting down
Jul 14 16:33:18 ac1 puppetd[580]: Reparsing /usr/local/etc/puppet/puppet.conf
Jul 14 16:33:18 ac1 puppetd[580]: Could not run Puppet::Network::Client::Master: Thread(#) not locked.

ps aux -www | grep puppetd
root    580  0.0  1.8 65736 65252  ??  Ss   Sat11AM   0:55.87 /usr/local/bin/ruby18 /usr/local/bin/puppetd --rundir /var/run/puppet
root  58855  0.0  0.0  1868  1460  ??  Is   Sat12PM   0:00.01 /bin/sh /usr/local/etc/rc.d/puppetd restart
root  58862  0.0  0.0  1868  1492  ??  S    Sat12PM   0:24.50 /bin/sh /usr/local/etc/rc.d/puppetd restart

Any idea???