-
由 Kohsuke Kawaguchi 提交于
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