Skip to content
  • Kohsuke Kawaguchi's avatar
    Fixed a bug in Jenkins.overallNodeProvisioner · be1f8f91
    Kohsuke Kawaguchi authored
    Until now, Jenkins.overallNodeProvisioner was tracking an inconsistent
    pair of numbers. On one hand, it was tracking all the executors in the
    system, but then it was also only tracking the # of free-roaming
    label-unassigned jobs as the queue length.
    
    So if all your slaves are set with Node.Mode.EXCLUSIVE and you have some
    free-roaming jobs, then it'll never tickle NodePrivisioner.
    
    In other words, the # of executors weren't reflecting the actual # of
    executors that can execute what's counted as the queue length.
    
    See the problem report at
    https://groups.google.com/forum/?fromgroups#!topic/jenkinsci-dev/bUwGEgOwv4Q
    
    To fix this, I introduced another LoadStatistics that only counts
    the # of executors that can execute free-roaming jobs, and # of
    free-roaming jobs as the queue length. In this way, two pairs of numbers
    are consistent.
    
    This now allows us to use overallLoadStatistics for really the entire
    system, including all executors and the total queue length. This is
    primarily for administrators to see the resource utilization, and it is
    not useful for NodeProvisioner input because it's mixing too many
    different things.
    
    The semantics change in OverallLoadStatistics.queueLength allows us to
    deprecate its totalQueueLength field.
    be1f8f91
To find the state of this project's repository at the time of any of these versions, check out the tags.
Loading