plathrop/puppet-module-supervisor — pull request #71 by wlonkly (2014-04-22 17:07:43+00:00)
Title: Narrow logfile dependency to logdir instead of entire class

We ran into a situation where we had supervisord stopped, and a typo in one of its services' ini files. Supervisord would fail to start because of the typo, and then puppet would refuse to update the ini file because the service failed to start.

Narrowed it down to this class dependency; supervisor::service has

File[$log_dir] -> File[$conf_file] ~>
Class['supervisor::update'] -> Service["supervisor::${name}"]

and the class dependency of File[$log_dir] means that we really have

Class['supervisor'] -> File[$log_dir] -> File[$conf_file] ...

which means that if supervisor fails to start, the rest of the chain doesn't run, and so it can't self-heal. Narrowing the dependency means it self-heals in two runs.