jenkinsci / jenkinsci/lockable-resources-plugin
lockable resource with CasC configuration - reloading issue - cannot get rid of declared resources
- Dominant language
- Java
- Stars
- 99
- Forks
- 205
- Avg merge
- 2d 13h
- Merged PRs (30d)
- 8
Description
### Jenkins and plugins versions report
Environment
```Jenkins: 2.444
OS: Linux - 6.8.0-45-generic
Java: 17.0.10 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)
---
ace-editor:1.1
active-directory:2.35
allure-jenkins-plugin:2.31.1
analysis-model-api:12.3.3
ansible:307.va_1f3ef06575a_
ansicolor:1.0.4
ant:497.v94e7d9fffa_b_9
antisamy-markup-formatter:162.v0e6ec0fcfcf6
apache-httpcomponents-client-4-api:4.5.14-208.v438351942757
apache-httpcomponents-client-5-api:5.3.1-1.0
artifactory:3.18.6
asm-api:9.7-33.v4d23ef79fcc8
audit-trail:361.v82cde86c784e
authentication-tokens:1.113.v81215a_241826
authorize-project:1.7.1
autocancel:1.0.5
aws-java-sdk:1.12.730-457.v3403b_37d2170
aws-java-sdk-api-gateway:1.12.730-457.v3403b_37d2170
aws-java-sdk-autoscaling:1.12.730-457.v3403b_37d2170
aws-java-sdk-cloudformation:1.12.730-457.v3403b_37d2170
aws-java-sdk-cloudfront:1.12.730-457.v3403b_37d2170
aws-java-sdk-codebuild:1.12.730-457.v3403b_37d2170
aws-java-sdk-codedeploy:1.12.730-457.v3403b_37d2170
aws-java-sdk-ec2:1.12.730-457.v3403b_37d2170
aws-java-sdk-ecr:1.12.730-457.v3403b_37d2170
aws-java-sdk-ecs:1.12.730-457.v3403b_37d2170
aws-java-sdk-efs:1.12.730-457.v3403b_37d2170
aws-java-sdk-elasticbeanstalk:1.12.730-457.v3403b_37d2170
aws-java-sdk-elasticloadbalancingv2:1.12.730-457.v3403b_37d2170
aws-java-sdk-iam:1.12.730-457.v3403b_37d2170
aws-java-sdk-kinesis:1.12.730-457.v3403b_37d2170
aws-java-sdk-lambda:1.12.730-457.v3403b_37d2170
aws-java-sdk-logs:1.12.730-457.v3403b_37d2170
aws-java-sdk-minimal:1.12.730-457.v3403b_37d2170
aws-java-sdk-organizations:1.12.730-457.v3403b_37d2170
aws-java-sdk-secretsmanager:1.12.730-457.v3403b_37d2170
aws-java-sdk-sns:1.12.730-457.v3403b_37d2170
aws-java-sdk-sqs:1.12.730-457.v3403b_37d2170
aws-java-sdk-ssm:1.12.730-457.v3403b_37d2170
badge:1.13
basic-branch-build-strategies:81.v05e333931c7d
bitbucket:241.v6d24a_57f9359
blueocean:1.27.13
blueocean-autofavorite:1.2.5
blueocean-bitbucket-pipeline:1.27.13
blueocean-commons:1.27.13
blueocean-config:1.27.13
blueocean-core-js:1.27.13
blueocean-dashboard:1.27.13
blueocean-display-url:2.4.2
blueocean-events:1.27.13
blueocean-git-pipeline:1.27.13
blueocean-github-pipeline:1.27.13
blueocean-i18n:1.27.13
blueocean-jwt:1.27.13
blueocean-personalization:1.27.13
blueocean-pipeline-api-impl:1.27.13
blueocean-pipeline-editor:1.27.13
blueocean-pipeline-scm-api:1.27.13
blueocean-rest:1.27.13
blueocean-rest-impl:1.27.13
blueocean-web:1.27.13
bootstrap4-api:4.6.0-6
bootstrap5-api:5.3.3-1
bouncycastle-api:2.30.1.78.1-233.vfdcdeb_0a_08a_a_
branch-api:2.1169.va_f810c56e895
build-blocker-plugin:166.vc82fc20b_a_ed6
build-monitor-plugin:1.14-883.vf620a_44eb_ec1
build-name-setter:2.4.2
build-timeout:1.32
build-timestamp:1.0.3
build-token-root:151.va_e52fe3215fc
build-user-vars-plugin:166.v52976843b_435
build-with-parameters:76.v9382db_f78962
caffeine-api:3.1.8-133.v17b_1ff2e0599
checks-api:2.2.0
claim:543.v0061de6b_dcb_d
cloudbees-bitbucket-branch-source:886.v44cf5e4ecec5
cloudbees-folder:6.928.v7c780211d66e
cobertura:1.17
code-coverage-api:4.99.0
command-launcher:107.v773860566e2e
commons-lang3-api:3.14.0-76.vda_5591261cfe
commons-text-api:1.11.0-109.vfe16c66636eb_
concurrent-step:1.0.0
config-file-provider:973.vb_a_80ecb_9a_4d0
configuration-as-code:1810.v9b_c30a_249a_4c
copyartifact:722.v0662a_9b_e22a_c
coverage:1.15.0
credentials:1337.v60b_d7b_c7b_c9f
credentials-binding:677.vdc9d38cb_254d
cucumber-reports:5.8.1
data-tables-api:2.0.8-1
dependency-check-jenkins-plugin:5.5.0
display-url-api:2.204.vf6fddd8a_8b_e9
docker-commons:439.va_3cb_0a_6a_fb_29
docker-workflow:580.vc0c340686b_54
dtkit-api:3.0.2
durable-task:555.v6802fe0f0b_82
echarts-api:5.5.0-1
eddsa-api:0.3.0-4.v84c6f0f4969e
email-ext:1814.v404722f34263
embeddable-build-status:487.va_0ef04c898a_2
external-monitor-job:215.v2e88e894db_f8
favorite:2.208.v91d65b_7792a_c
file-parameters:339.v4b_cc83e11455
font-awesome-api:6.5.2-1
forensics-api:2.4.0
gatling:1.3.0
git:5.2.2
git-client:4.7.0
git-parameter:0.9.19
git-server:126.v0d945d8d2b_39
github:1.39.0
github-api:1.318-461.v7a_c09c9fa_d63
github-autostatus:3.6.2
github-branch-source:1789.v5b_0c0cea_18c3
golang:1.4
gradle:2.12
groovy:457.v99900cb_85593
gson-api:2.11.0-41.v019fcf6125dc
handlebars:3.0.8
handy-uri-templates-2-api:2.1.8-30.v7e777411b_148
htmlpublisher:1.34
http_request:1.18
ignore-committer-strategy:1.0.4
instance-identity:185.v303dc7c645f9
ionicons-api:74.v93d5eb_813d5f
ivy:2.6
jackson2-api:2.17.0-379.v02de8ec9f64c
jacoco:3.3.6
jakarta-activation-api:2.1.3-1
jakarta-mail-api:2.1.3-1
javadoc:243.vb_b_503b_b_45537
javax-activation-api:1.2.0-7
javax-mail-api:1.6.2-10
jaxb:2.3.9-1
jdk-tool:73.vddf737284550
jenkins-design-language:1.27.13
jersey2-api:2.42-147.va_28a_44603b_d5
jfrog:1.5.0
jira:3.13
jira-steps:2.0.165.v8846cf59f3db
jjwt-api:0.11.5-112.ve82dfb_224b_a_d
jnr-posix-api:3.1.19-2
job-dsl:1.87
jobConfigHistory:1229.v3039470161a_d
joda-time-api:2.12.7-29.v5a_b_e3a_82269a_
jquery:1.12.4-1
jquery3-api:3.7.1-2
jsch:0.2.16-86.v42e010d9484b_
json-api:20240303-41.v94e11e6de726
json-path-api:2.9.0-58.v62e3e85b_a_655
junit:1265.v65b_14fa_f12f0
kubernetes:4245.vf5b_83f1fee6e
kubernetes-cli:1.12.1
kubernetes-client-api:6.10.0-240.v57880ce8b_0b_2
kubernetes-credentials:174.va_36e093562d9
ldap:725.v3cb_b_711b_1a_ef
leastload:3.0.0
lockable-resources:1255.vf48745da_35d0
mailer:472.vf7c289a_4b_420
mask-passwords:173.v6a_077a_291eb_5
matrix-auth:3.2.2
matrix-project:832.va_66e270d2946
maven-plugin:3.23
mercurial:1260.vdfb_723cdcc81
metrics:4.2.21-451.vd51df8df52ec
mina-sshd-api-common:2.12.1-113.v4d3ea_5eb_7f72
mina-sshd-api-core:2.12.1-113.v4d3ea_5eb_7f72
momentjs:1.1.1
monitoring:1.99.0
msbuild:1.33
mstestrunner:1.5.0
next-build-number:1.8
nunit:485.ve8a_85357320d
nvm-wrapper:0.1.7
okhttp-api:4.11.0-172.vda_da_1feeb_c6e
pam-auth:1.11
parameterized-scheduler:277.v61a_4b_a_49a_c5c
pipeline-build-step:540.vb_e8849e1a_b_d8
pipeline-graph-analysis:216.vfd8b_ece330ca_
pipeline-groovy-lib:710.v4b_94b_077a_808
pipeline-input-step:495.ve9c153f6067b_
pipeline-milestone-step:119.vdfdc43fc3b_9a_
pipeline-model-api:2.2198.v41dd8ef6dd56
pipeline-model-definition:2.2198.v41dd8ef6dd56
pipeline-model-extensions:2.2198.v41dd8ef6dd56
pipeline-rest-api:2.34
pipeline-stage-step:312.v8cd10304c27a_
pipeline-stage-tags-metadata:2.2198.v41dd8ef6dd56
pipeline-stage-view:2.34
pipeline-utility-steps:2.16.2
plain-credentials:182.v468b_97b_9dcb_8
plugin-util-api:4.1.0
popper-api:1.16.1-3
popper2-api:2.11.6-4
powershell:2.1
prism-api:1.29.0-15
prometheus:773.v3b_62d8178eec
pubsub-light:1.18
pyenv-pipeline:2.1.2
rebuild:332.va_1ee476d8f6d
remote-file:1.24
resource-disposer:0.23
role-strategy:727.vd344b_eec783d
run-condition:1.7
scm-api:690.vfc8b_54395023
scm-filter-branch-pr:148.v0b_5f06e8b_c84
script-security:1341.va_2819b_414686
simple-theme-plugin:176.v39740c03a_a_f5
sloccount:1.27
snakeyaml-api:2.2-111.vc6598e30cc65
sonar:2.17.2
sse-gateway:1.27
ssh-credentials:337.v395d2403ccd4
ssh-steps:2.0.68.va_d21a_12a_6476
sshd:3.330.vc866a_8389b_58
stashNotifier:1.492.v1b_33f185ee18
structs:337.v1b_04ea_4df7c8
timestamper:1.27
token-macro:400.v35420b_922dcb_
trilead-api:2.147.vb_73cc728a_32e
uno-choice:2.8.3
variant:60.v7290fc0eb_b_cd
violation-comments-to-stash:1.134
vstestrunner:1.0.8
warnings-ng:11.3.0
windows-slaves:1.8.1
workflow-aggregator:596.v8c21c963d92d
workflow-api:1316.v33eb_726c50b_a_
workflow-basic-steps:1058.vcb_fc1e3a_21a_9
workflow-cps:3894.3896.vca_2c931e7935
workflow-cps-global-lib:612.v55f2f80781ef
workflow-durable-task-step:1353.v1891a_b_01da_18
workflow-job:1400.v7fd111b_ec82f
workflow-multibranch:783.va_6eb_ef636fb_d
workflow-scm-step:427.v4ca_6512e7df1
workflow-step-api:657.v03b_e8115821b_
workflow-support:907.v6713a_ed8a_573
ws-cleanup:0.46
xunit:3.1.4
```
### What Operating System are you using (both controller, and any agents involved in the problem)?
Rocky8
### Reproduction steps
1. Create configuration with Casc, reload
```
unclassified:
lockableResourcesManager:
declaredResources:
- name: "foo"
- name: "bar"
- name: "waldo"
```
2. Check things looking fine
3. Create another configuration with Casc, reload:
```
unclassified:
lockableResourcesManager:
declaredResources:
```
### Expected Results
I expect the declared resources are all removed
### Actual Results
The declared resources are still there. I tried different things, like completely not loading in any "lockableResourcesManager", or like loading the below without delcaredResources:
```
unclassified:
lockableResourcesManager:
```
it does not work
However, trimming down the list works:
```
unclassified:
lockableResourcesManager:
declaredResources:
- name: "foo"
- name: "bar"
```
This will successfully remove Waldo.
### Anything else?
_No response_
### Are you interested in contributing a fix?
_No response_
Contributor guide
Research direction
Start with the lockableResourcesManager CasC configuration path and reproduce the two reloads described in the issue. Compare the behavior of an empty declaredResources value with a shortened list, then verify that reloading the empty configuration removes all previously declared resources.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100