When Puppet Server's master is handling a request that needs to be handled by JRuby, the master will borrow a JRuby request instance from a pool. Currently, the borrow attempt will block indefinitely. Under high-load situations where all of the instances of the pool are in use, then, requests could back up indefinitely waiting for a JRuby instance to become available.
In order to bound the amount of time that a borrow attempt could take, a borrow-timeout setting should be made available to the user to configure the maximum wait time. A reasonably high value should be used as the default, however, to avoid introducing large numbers of request failures for "normal" cases where a master might be experiencing temporary traffic spikes. This ticket proposes that a 20 minute maximum be used as the default value.
The work for this ticket was already done on the Puppet Server master branch – in
SERVER-246 and SERVER-389. This ticket basically just tracks the backport of the borrow-timeout functionality to the Puppet Server stable branch for inclusion in a 1.x release.
Risk assessment: Low (QA will not perform any validation)
Severity: Low (generally only affects a single puppet agent run)