jenkinsci / lockable-resources-plugin

Lock resources against concurrent use
https://plugins.jenkins.io/lockable-resources
MIT License
87 stars 185 forks source link

lockable resource with CasC configuration - reloading issue - cannot get rid of declared resources #721

Open daipok opened 1 week ago

daipok commented 1 week ago

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

mPokornyETM commented 2 days ago

I think, this is how the JcAC works. Probably nothing todo with Lockable Resources.