Uploaded image for project: 'Puppet Server'
  1. Puppet Server
  2. SERVER-408

Expose configurable `borrow-timeout` to allow JRuby pool borrows to timeout



    • Improvement
    • Status: Closed
    • Normal
    • Resolution: Fixed
    • None
    • SERVER 1.0.8, SERVER 2.1.0
    • None
    • None


      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)
      Probability: Low
      Severity: Low (generally only affects a single puppet agent run)


        Issue Links



              qa qa
              chris Chris Price
              Erik Dasher Erik Dasher
              0 Vote for this issue
              2 Start watching this issue



                Zendesk Support