Issue #7165 has been updated by Matt Dainty.
Jo Rhett wrote: > It would appear that the service resource isn't checked to see if its running > until the notify is parsed, which is why the ordering happened as listed. > You could enforce this ordering by adding "require => Service['nginx']" to > the file stanza, which would create > > start service > replace file > restart service This won't work though as you end up creating a dependency loop as the service ends up depending on the file which depends on the service. > What I think you're asking for is "if the service hasn't started yet, update > the file first and then start the service". "update the file first, start the service OR restart the service" instead of "update the file first, start the service and restart the service" which is what currently happens in the case it wasn't running to begin with. (I filed the duplicate #9656, this bites me hard as I have services which take in the order of minutes to start up, and I have to stop them before upgrading the packages so I always have to endure a double startup when the packages and config files change) Personally I consider the init script buggy if restart fails when it wasn't running, ditto for stop failing/exiting with !0 when it wasn't running. Note that I consider "restart" and "reload" semantically different, restart to me is a just a shortcut for "stop; start" which at least for init scripts is how 99% of them implement the restart logic, while reload is the shortcut that just sends a signal or whatnot, and so requires the service to be running. ---------------------------------------- Bug #7165: If services hasn’t started yet, where possible update the file first and then start the service. https://projects.puppetlabs.com/issues/7165 Author: John Florian Status: Needs More Information Priority: Normal Assignee: Nigel Kersten Category: service Target version: Affected Puppet version: 0.25.5 Keywords: Branch: Given the following conditions: 1. service 'S' is currently disabled/stopped 1. config file 'F' for service 'S' is currently in state 'A' 1. puppet class 'C' calls for 'S' to be enabled/running and 'F' to be in state 'B' When puppet runs, the following currently occurs: <pre> notice: //C/File[F]/content: content changed '{md5}-A' to '{md5}-B' info: //C/File[F]: Scheduling refresh of Service[S] notice: //C/Service[S]/ensure: ensure changed 'stopped' to 'running' notice: //C/Service[S]: Triggering 'refresh' from 1 dependencies </pre> Thus, puppet sees the service is to be running and makes it so. Then it realizes that a refresh is needed and so restarts the service. The restart is unnecessary in this case. Depending on the particular service, this could be quite undesirable. Puppet should be able to recognize this case and simply start the service just once. -- You have received this notification because you have either subscribed to it, or are involved in it. To change your notification preferences, please click here: http://projects.puppetlabs.com/my/account -- You received this message because you are subscribed to the Google Groups "Puppet Bugs" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/puppet-bugs?hl=en.
