Issue
It is not possible to set number of executors of Controllers with the following approaches:
-
On-controller executors at Controller configuration
When the Controller is restarted the number of executors returns to 0
. This can cause unexpected behavior during a period of time until the enforcement process is completed.
The Controller startup logs show something like the following:
2021-10-19 03:31:44.547+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: Listed all plugins 2021-10-19 03:32:01.515+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: Prepared all plugins 2021-10-19 03:32:04.815+0000 [id=27] INFO jenkins.InitReactorRunner$1#onAttained: Started all plugins 2021-10-19 03:32:04.937+0000 [id=27] INFO jenkins.InitReactorRunner$1#onAttained: Augmented all extensions 2021-10-19 03:32:07.611+0000 [id=27] INFO jenkins.InitReactorRunner$1#onAttained: System config loaded 2021-10-19 03:32:08.825+0000 [id=27] INFO jenkins.InitReactorRunner$1#onAttained: System config adapted 2021-10-19 03:32:08.826+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: Loaded all jobs [...] 2021-10-19 03:32:11.126+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: Configuration for all jobs updated [...] 2021-10-19 03:32:12.723+0000 [id=57] INFO c.c.o.c.p.OperationsCenterRootAction$DescriptorImpl#setApprovedState: Approved 2021-10-19 03:32:13.225+0000 [id=57] INFO c.c.o.c.p.OperationsCenterRootAction$DescriptorImpl#setConnectedState: Connected [...] 2021-10-19 03:32:13.345+0000 [id=28] INFO j.util.groovy.GroovyHookScript#execute: Executing /var/jenkins_home/init.groovy.d/init_01_launch_configure_jenkins.groovy [...] 2021-10-19 03:32:24.912+0000 [id=28] INFO j.util.groovy.GroovyHookScript#execute: Executing /var/jenkins_home/configure-jenkins.groovy.d/01-controller-executors.groovy --> disabling controller executors [...] 2021-10-19 03:32:46.734+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: Completed initialization 2021-10-19 03:32:47.208+0000 [id=21] INFO hudson.WebAppMain$3#run: Jenkins is fully up and running
The 01-controller-executors.groovy
hook script which is provided by CloudBees official images is responsible for setting the number of executors back to 0
. This enforcement is expected and it is one of the CloudBees recommendations that Operations Center and Controllers have 0 executors. You can check below the 01-controller-executors.groovy
source code for better understanding:
import hudson.model.*; import jenkins.model.*; println "--> disabling controller executors" Jenkins.instance.setNumExecutors(0)
Environment
-
CloudBees CI (CloudBees Core) on modern cloud platforms - Managed controller
-
CloudBees CI (CloudBees Core) on modern cloud platforms - Operations Center
-
CloudBees CI (CloudBees Core) on traditional platforms - Client controller
-
CloudBees CI (CloudBees Core) on traditional platforms - Operations Center
Resolution
There is no current resolution as the enforcement is one of the CloudBees recommendations that Operations Center and Controllers have 0 executors.
Workaround
Official image customization
You could customize your Controller images to either remove that init script or modify the number of executors that are established in it.
Enforce number of executors from Operations Center
At https://YOUR_DOMAIN/cjoc/configureSecurity/
you could set the desired number of executors:

After every Controller restart the 01-controller-executors.groovy
will be executed setting the number of executors to 0
but after a short period of time the enforcement will take place. The enforcement can also be done via Configuration as Code for the Operations Center
Add an additional init.d script
An additional init.d
script would be executed after 01-controller-executors.groovy
. For example named as init_02_SCRIPT_CUSTOM_NAME
or with a prefix that comes after this fix alphanumerically. You should place the script under ${JENKINS_HOME}/init.groovy.d
. After placing it there and restart your instance you should see in the startup logs something like the following:
2022-04-04 14:20:21.523+0000 [id=74] INFO c.c.o.c.p.OperationsCenterRootAction$DescriptorImpl#setConnectedState: Connected 2022-04-04 14:20:21.539+0000 [id=28] INFO j.util.groovy.GroovyHookScript#execute: Executing /var/jenkins_home/configure-jenkins.groovy.d/01-controller-executors.groovy --> disabling controller executors 2022-04-04 14:20:22.024+0000 [id=28] INFO j.util.groovy.GroovyHookScript#execute: Executing /var/jenkins_home/init.groovy.d/init_02_controller_executors.groovy --> disabling controller executors 2022-04-04 14:20:22.274+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: Completed initialization 2022-04-04 14:20:22.347+0000 [id=22] INFO hudson.lifecycle.Lifecycle#onReady: Jenkins is fully up and running 2022-04-04 14:20:22.837+0000 [id=50] INFO c.c.j.p.a.m.UpdateSiteDataProvider$Value#get: Beekeeper is parsing UpdateSite cap-core-mm 2022-04-04 14:20:24.045+0000 [id=94] INFO hudson.license.LicenseListener#fireAfterUpdate: firing the license update notification