Issue #7165 has been updated by Nigel Kersten.
This isn't trivial, but we'll spend some time having looking into whether we can make this situation a bit better. Underneath the two "starts" are doing different things, as a service with "hasrestart => true" shows: <pre> info: /Stage[main]//File[/tmp/foobar]: Scheduling refresh of Service[apache2] debug: Service[apache2](provider=debian): Executing '/etc/init.d/apache2 status' debug: Service[apache2](provider=debian): Executing '/etc/init.d/apache2 start' notice: /Stage[main]//Service[apache2]/ensure: ensure changed 'stopped' to 'running' debug: Service[apache2](provider=debian): Executing '/etc/init.d/apache2 status' debug: Service[apache2](provider=debian): Executing '/etc/init.d/apache2 restart' </pre> See how one of these is invoking the start method to move from stopped => running, and the other is invoking the restart method due to receiving an event? For some services quite different things happen in start compared to restart, and for many services you can't restart them if they're not running. <pre> debug: Service[apache2](provider=debian): Executing '/etc/init.d/apache2 status' debug: Service[apache2](provider=debian): Executing '/etc/init.d/apache2 status' debug: /Stage[main]//Service[apache2]: Skipping restart; service is not running notice: /Stage[main]//Service[apache2]: Triggered 'refresh' from 1 events </pre> Hopefully that shows how this isn't as simple a case as it might look. ---------------------------------------- Bug #7165: services restarted unnecessarily https://projects.puppetlabs.com/issues/7165 Author: John Florian Status: Needs Decision 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.
