From the puppet docs, https://docs.puppet.com/puppet/3.8/configuration.html#environmenttimeout
We recommend setting environment_timeout to unlimited and explicitly refreshing your Puppet master as part of your code deployment process.
- With Puppet Server, you should refresh environments by calling the environment-cache API endpoint. See the docs for the Puppet Server administrative API.
- With a Rack Puppet master, you should restart the web server or the application server. Passenger lets you touch a restart.txt file to refresh an application without restarting Apache; see the Passenger docs for details.
We don’t recommend using any value other than 0 or unlimited, since most Puppet masters use a pool of Ruby interpreters which all have their own cache timers. When these timers drift out of sync, agents can be served inconsistent catalogs.
So we should look into the passenger restart mechanism (I vaguely remember it being half-finished in the free version) and possibly integrate it with puppet-merge.