Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NoSuchMethodError: org.gitlab4j.api.ProjectApi.addHook(Object, String, ProjectHook, boolean, String) #435

Closed
pennello opened this issue Aug 12, 2024 · 9 comments · Fixed by #438
Labels
bug Something isn't working

Comments

@pennello
Copy link

Jenkins and plugins versions report

Environment
Jenkins: 2.462.1
OS: Linux - 6.1.85+
Java: 17.0.12 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)
---
analysis-model-api:12.4.0
ansicolor:1.0.4
ant:511.v0a_a_1a_334f41b_
antisamy-markup-formatter:162.v0e6ec0fcfcf6
apache-httpcomponents-client-4-api:4.5.14-208.v438351942757
apache-httpcomponents-client-5-api:5.3.1-110.v77252fb_d4da_5
asm-api:9.7-33.v4d23ef79fcc8
authentication-tokens:1.119.v50285141b_7e1
bootstrap5-api:5.3.3-1
bouncycastle-api:2.30.1.78.1-248.ve27176eb_46cb_
branch-api:2.1178.v969d9eb_c728e
build-time-blame:75.v44a_51cc97cdd-2.1.0
build-timeout:1.33
buildtriggerbadge:251.vdf6ef853f3f5
caffeine-api:3.1.8-133.v17b_1ff2e0599
checks-api:2.2.0
cloudbees-folder:6.942.vb_43318a_156b_2
command-launcher:115.vd8b_301cc15d0
commons-compress-api:1.26.1-2
commons-lang3-api:3.14.0-76.vda_5591261cfe
commons-text-api:1.12.0-129.v99a_50df237f7
config-file-provider:973.vb_a_80ecb_9a_4d0
copyartifact:749.vfb_dca_a_9b_6549
coverage:1.16.1
credentials:1371.vfee6b_095f0a_3
credentials-binding:681.vf91669a_32e45
dark-theme:479.v661b_1b_911c01
data-tables-api:2.0.8-1
disk-usage:1.2
display-url-api:2.204.vf6fddd8a_8b_e9
docker-commons:443.v921729d5611d
docker-workflow:580.vc0c340686b_54
durable-task:568.v8fb_5c57e8417
echarts-api:5.5.0-1
eddsa-api:0.3.0-4.v84c6f0f4969e
email-ext:1814.v404722f34263
external-monitor-job:215.v2e88e894db_f8
flatpickr-api:4.6.13-5.v534d8025a_a_59
font-awesome-api:6.5.2-1
forensics-api:2.4.0
git:5.3.0
git-client:5.0.0
git-server:126.v0d945d8d2b_39
github:1.40.0
github-api:1.321-468.v6a_9f5f2d5a_7e
github-branch-source:1793.v1831e9c68d77
gitlab-api:5.6.0-97.v6603a_83f8690
gitlab-branch-source:704.vc7f1202d7e14
gitlab-plugin:1.8.1
global-build-stats:307.v03dce5a_f8943
google-compute-engine:4.575.v6969b_7c435eb_
google-login:109.v022b_cf87b_e5b_
google-oauth-plugin:1.330.vf5e86021cb_ec
gson-api:2.11.0-41.v019fcf6125dc
handy-uri-templates-2-api:2.1.8-30.v7e777411b_148
instance-identity:185.v303dc7c645f9
ionicons-api:74.v93d5eb_813d5f
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:280.v050b_5c849f69
javax-activation-api:1.2.0-7
javax-mail-api:1.6.2-10
jaxb:2.3.9-1
jdk-tool:80.v8a_dee33ed6f0
jersey2-api:2.44-151.v6df377fff741
jjwt-api:0.11.5-112.ve82dfb_224b_a_d
jmh-report:0.9.0
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:1284.vf75d778f98c5
junit-attachments:239.v9e003a_c80a_8c
kubernetes:4285.v50ed5f624918
kubernetes-client-api:6.10.0-240.v57880ce8b_0b_2
kubernetes-credentials:174.va_36e093562d9
mailer:472.vf7c289a_4b_420
mask-passwords:173.v6a_077a_291eb_5
matrix-auth:3.2.2
matrix-project:832.va_66e270d2946
metrics:4.2.21-451.vd51df8df52ec
mina-sshd-api-common:2.13.1-117.v2f1a_b_66ff91d
mina-sshd-api-core:2.13.1-117.v2f1a_b_66ff91d
oauth-credentials:0.653.v14cf2088e950
okhttp-api:4.11.0-172.vda_da_1feeb_c6e
pagerduty:0.7.1
parameterized-scheduler:277.v61a_4b_a_49a_c5c
pipeline-build-step:540.vb_e8849e1a_b_d8
pipeline-github-lib:61.v629f2cc41d83
pipeline-graph-analysis:216.vfd8b_ece330ca_
pipeline-groovy-lib:727.ve832a_9244dfa_
pipeline-input-step:495.ve9c153f6067b_
pipeline-milestone-step:119.vdfdc43fc3b_9a_
pipeline-model-api:2.2205.vc9522a_9d5711
pipeline-model-definition:2.2205.vc9522a_9d5711
pipeline-model-extensions:2.2205.vc9522a_9d5711
pipeline-rest-api:2.34
pipeline-stage-step:312.v8cd10304c27a_
pipeline-stage-tags-metadata:2.2205.vc9522a_9d5711
pipeline-stage-view:2.34
pipeline-utility-steps:2.17.0
plain-credentials:183.va_de8f1dd5a_2b_
plugin-util-api:4.1.0
prism-api:1.29.0-15
resource-disposer:0.23
scm-api:696.v778d637b_a_762
script-security:1341.va_2819b_414686
sidebar-link:2.4.1
slack:734.v7f9ec8b_66975
snakeyaml-api:2.2-121.v5a_68b_9300b_d4
ssh-credentials:343.v884f71d78167
ssh-slaves:2.973.v0fa_8c0dea_f9f
sshd:3.330.vc866a_8389b_58
structs:338.v848422169819
theme-manager:262.vc57ee4a_eda_5d
throttle-concurrents:2.14
timestamper:1.27
token-macro:400.v35420b_922dcb_
trilead-api:2.147.vb_73cc728a_32e
variant:60.v7290fc0eb_b_cd
workflow-aggregator:600.vb_57cdd26fdd7
workflow-api:1332.vc21122317a_8e
workflow-basic-steps:1058.vcb_fc1e3a_21a_9
workflow-cps:3922.va_f73b_7c4246b_
workflow-durable-task-step:1364.v2fd76fb_6fd41
workflow-job:1436.vfa_244484591f
workflow-multibranch:795.ve0cb_1f45ca_9a_
workflow-scm-step:427.v4ca_6512e7df1
workflow-step-api:678.v3ee58b_469476
workflow-support:920.v59f71ce16f04

What Operating System are you using (both controller, and any agents involved in the problem)?

  • Controller: Official Docker image: docker.io/jenkins/jenkins:2.452.2-jdk17
  • Agents: Rocky Linux 9

Reproduction steps

We manage our Jenkins job definitions with Terraform and the Jenkins API. Whenever we try to push up new configuration, it fails. Please find further details below.

Expected Results

Job definition updates without error. : ]

Actual Results

Exception!

java.lang.NoSuchMethodError: 'org.gitlab4j.api.models.ProjectHook org.gitlab4j.api.ProjectApi.addHook(java.lang.Object, java.lang.String, org.gitlab4j.api.models.ProjectHook, boolean, java.lang.String)'
at PluginClassLoader for gitlab-branch-source//io.jenkins.plugins.gitlabbranchsource.GitLabHookCreator.createWebHookWhenMissing(GitLabHookCreator.java:231)
at PluginClassLoader for gitlab-branch-source//io.jenkins.plugins.gitlabbranchsource.GitLabHookCreator.register(GitLabHookCreator.java:105)
at PluginClassLoader for gitlab-branch-source//io.jenkins.plugins.gitlabbranchsource.GitLabSCMSource.afterSave(GitLabSCMSource.java:782)
at PluginClassLoader for branch-api//jenkins.branch.MultiBranchProject.fireSCMSourceAfterSave(MultiBranchProject.java:932)
at PluginClassLoader for branch-api//jenkins.branch.MultiBranchProject.onLoad(MultiBranchProject.java:248)
at PluginClassLoader for workflow-multibranch//org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject.onLoad(WorkflowMultiBranchProject.java:85)
at hudson.model.AbstractItem$1.call(AbstractItem.java:931)
at hudson.model.AbstractItem$1.call(AbstractItem.java:929)
at hudson.model.Items.whileUpdatingByXml(Items.java:132)
at hudson.model.AbstractItem.updateByXml(AbstractItem.java:929)
at hudson.model.AbstractItem.doConfigDotXml(AbstractItem.java:857)
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)
at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:416)
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:429)
at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:211)
at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:138)
at org.kohsuke.stapler.MetaClass$11.doDispatch(MetaClass.java:644)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:61)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:827)

Anything else?

We recently updated our Jenkins plugins, notably

  • gitlab4j5.6.0-97.v6603a_83f8690 and
  • gitlabbranchsource704.vc7f1202d7e14.

Specifically, I believe the gitlab4j authors made a backwards-incompatible change in 224f4c5 in which the signature of org.gitlab4j.api.ProjectApi.addHook changed its boolean argument from boolean to Boolean. I believe the GitLabHookCreator is still trying to use the old/gone signature here:

gitLabApi.getProjectApi().addHook(project, hookUrl, projectHook, false, secretToken);

Obviously, it's not great that addHook got changed in a backwards-incompatible way. But it seems like it would be useful for the hook creator in this plugin to enjoy an update that allows it to use the new method.

Are you interested in contributing a fix?

Would that it were.

@pennello pennello added the bug Something isn't working label Aug 12, 2024
pennello referenced this issue in gitlab4j/gitlab4j-api Aug 12, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
…1123)

---------

Co-authored-by: Jeremie Bresson <[email protected]>
@waeller
Copy link

waeller commented Aug 13, 2024

Same here.

It worked again after manually downloading and installing version 5.3 of the Gitlab API Plugin from https://updates.jenkins.io/download/plugins/gitlab-api/

@pennello
Copy link
Author

Thanks @waeller ; we'll give that a try. Our less-than-ideal workaround was to disable web hook management on the plugin (which is the code path in which it tries to call addHook), run our Terraform updates, and then re-enable web hook management!

@Takaranoao
Copy link

Same here.

It worked again after manually downloading and installing version 5.3 of the Gitlab API Plugin from https://updates.jenkins.io/download/plugins/gitlab-api/

Same problem, this solution works.

@officeprofile1234
Copy link

same here, rollback helped.

@nathan-objective
Copy link
Contributor

We have also hit this problem in our environment.

Updating the version of the BOM for the plugin worked for us. The version changes are listed in PR #438.

@pennello
Copy link
Author

Awesome @nathan-objective !

@Flexba
Copy link

Flexba commented Aug 22, 2024

We also hat that issue in our environment and downgraded to fix it.

Thanks for the PR @nathan-objective !

@jakegt1
Copy link

jakegt1 commented Aug 26, 2024

I guess no one is around to merge nathan's change?

MarkEWaite added a commit to MarkEWaite/gitlab4j-api that referenced this issue Aug 27, 2024
gitlab4j@224f4c5#commitcomment-145297850
notes that the change from boolean to Boolean is a breaking change in
the API.

It seems easiest and safest to restore API compatibility rather than
requiring lock-step upgrades from consumers of the API.  Jenkins (as an
example) allows users to upgrade the GitLab API plugin without requiring
that they upgrade the GitLab branch source plugin.  When that happens,
the breaking change in the API causes runtime failures for Jenkins users.

jenkinsci/gitlab-branch-source-plugin#435
reports some of those runtime failures.

https://issues.jenkins.io/browse/JENKINS-73672 reports more runtime
failures due to the breaking change in the API.

Fixes gitlab4j#1155
@basil
Copy link
Member

basil commented Aug 27, 2024

Fixed in #438. Released in 710.v6f19df32544b_.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

8 participants