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.

Reply via email to