I have been seeing this problem in my cookbooks where a recipe updates some
config and attempts to restart a service by sending a ‘delayed’ notification to
the service resource but another cookbook/recipe later in the run list fails.
The restart notification is never executed and during the next chef run the
config is correct and so the service is never restarted and config is never
The simple solution to this is to always use the :immediately tag, but then you
may end up restarting your service several times during a chef run.
Another option is to create a node on that machine for each recipe that starts
a service, but this seems like an administration pain.