Page MenuHomePhabricator

[Java] client pipeline tests fail with pipeline CPS method mismatches
Closed, ResolvedPublic

Description

Background

What are Pipeline CPS Method Mismatches ?

The Metrics Platform Java test pipeline job began failing consistently starting 3/7/23.

Console output of failed build #368 emitted the following error message:

Started by upstream project "trigger-metrics-platform-pipeline-test-java" build number 368
originally caused by:
 Started by user unknown or anonymous
Loading library wikimedia-integration-pipelinelib@master
Attempting to resolve master from remote references...
 > git --version # timeout=10
 > git --version # 'git version 2.20.1'
 > git ls-remote -- https://gerrit.wikimedia.org/r/integration/pipelinelib # timeout=10
Found match: refs/heads/master revision 702ecfbc64c4afadc8517fe8ea46fe0beb0d3e9d
Using checkout strategy: SpecificRevisionBuildChooser
Last Built Revision: Revision 702ecfbc64c4afadc8517fe8ea46fe0beb0d3e9d (master)
Selected Git installation does not exist. Using Default
The recommended git tool is: NONE
No credentials specified
 > git rev-parse --resolve-git-dir /srv/jenkins/workspace/metrics-platform-pipeline-test-java@libs/61759b85b1a77535777ccdcc7c4c739b7b963df582f22c885879bdb58d32e56b/.git # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://gerrit.wikimedia.org/r/integration/pipelinelib # timeout=10
Fetching without tags
Fetching upstream changes from https://gerrit.wikimedia.org/r/integration/pipelinelib
 > git --version # timeout=10
 > git --version # 'git version 2.20.1'
 > git fetch --no-tags --force --progress -- https://gerrit.wikimedia.org/r/integration/pipelinelib +refs/heads/*:refs/remotes/origin/* +refs/changes/*:refs/remotes/origin/changes/* # timeout=10
Checking out Revision 702ecfbc64c4afadc8517fe8ea46fe0beb0d3e9d (master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 702ecfbc64c4afadc8517fe8ea46fe0beb0d3e9d # timeout=10
Commit message: "Allow more BuildKit frontend image names"
 > git rev-list --no-walk 702ecfbc64c4afadc8517fe8ea46fe0beb0d3e9d # timeout=10
[Pipeline] Start of Pipeline
[Pipeline] node
Running on contint1002 in /srv/jenkins-slave/workspace/metrics-platform-pipeline-test-java
[Pipeline] {
[Pipeline] stage
[Pipeline] { (configure)
[Pipeline] checkout
Using checkout strategy: Default
Last Built Revision: Revision 216693dee5f59ba4e52c2808a0f33682d5c7b1e9 (detached)
The recommended git tool is: NONE
No credentials specified
Wiping out workspace first.
Cloning the remote Git repository
Using shallow clone with depth 1
Avoid fetching tags
Using shallow fetch with depth 1
Cloning repository git://contint2001.wikimedia.org/mediawiki/libs/metrics-platform
 > git init /srv/jenkins-slave/workspace/metrics-platform-pipeline-test-java # timeout=10
Fetching upstream changes from git://contint2001.wikimedia.org/mediawiki/libs/metrics-platform
 > git --version # timeout=10
 > git --version # 'git version 2.20.1'
 > git fetch --no-tags --force --progress --depth=1 -- git://contint2001.wikimedia.org/mediawiki/libs/metrics-platform +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git config remote.origin.url git://contint2001.wikimedia.org/mediawiki/libs/metrics-platform # timeout=10
 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git config remote.origin.url git://contint2001.wikimedia.org/mediawiki/libs/metrics-platform # timeout=10
Fetching upstream changes from git://contint2001.wikimedia.org/mediawiki/libs/metrics-platform
 > git fetch --no-tags --force --progress --depth=1 -- git://contint2001.wikimedia.org/mediawiki/libs/metrics-platform refs/zuul/master/Zc7bd0b59509f4b999375a00c2c1cbf2c # timeout=10
getCandidateRevisions(false,c19ec7b35f8fc907782236855ab16f56ac7007e3,,,hudson.plugins.git.util.BuildData@5abc5551[scmName=<null>,remoteUrls=[git://contint2001.wikimedia.org/mediawiki/libs/metrics-platform],buildsByBranchName={detached=Build #366 of Revision 216693dee5f59ba4e52c2808a0f33682d5c7b1e9 (detached)},lastBuild=Build #366 of Revision 216693dee5f59ba4e52c2808a0f33682d5c7b1e9 (detached)]) considering branches to build
Will build the detached SHA1 AnyObjectId[c19ec7b35f8fc907782236855ab16f56ac7007e3]
Checking out Revision c19ec7b35f8fc907782236855ab16f56ac7007e3 (detached)
Commit message: "Add default implementation of EventSender"
First time build. Skipping changelog.
expected to call org.wikimedia.integration.PipelineRunner.<init> but wound up catching org.wikimedia.integration.Utility.parseImageRef;
see: https://jenkins.io/redirect/pipeline-cps-method-mismatches/
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
 > git rev-parse c19ec7b35f8fc907782236855ab16f56ac7007e3^{commit} # timeout=10
 > git config core.sparsecheckout # timeout=10
 > git checkout -f c19ec7b35f8fc907782236855ab16f56ac7007e3 # timeout=10
 > git rev-list --no-walk 216693dee5f59ba4e52c2808a0f33682d5c7b1e9 # timeout=10
[Pipeline] // node
[Pipeline] End of Pipeline
hudson.remoting.ProxyException: CpsCallableInvocation{methodName=parseImageRef, call=com.cloudbees.groovy.cps.impl.CpsFunction@1afc5c7c, receiver=class org.wikimedia.integration.Utility, arguments=[docker-registry.wikimedia.org/wikimedia/blubber-buildkit:v0.11.1]}
Finished: FAILURE

Possibly related to T329553 (https://gerrit.wikimedia.org/r/c/integration/pipelinelib/+/893028) ?

Description

Fix the Metrics Platform Java test pipeline job

Acceptance criteria

Event Timeline

cjming added a subscriber: Gehel.

@Gehel suggested standardizing the build in the Java pipeline (thereby adding support for SonarCloud) << new ticket T331499

hashar subscribed.

+ ci-test-error which is where we track anything that happens to fail on CI for whatever reason :)

The error:

expected to call org.wikimedia.integration.PipelineRunner.<init> but wound up catching org.wikimedia.integration.Utility.parseImageRef;
see: https://jenkins.io/redirect/pipeline-cps-method-mismatches/

And the details:

hudson.remoting.ProxyException: CpsCallableInvocation{
  methodName=parseImageRef,
  call=com.cloudbees.groovy.cps.impl.CpsFunction@13b47af5,
  receiver=class org.wikimedia.integration.Utility,
  arguments=[docker-registry.wikimedia.org/wikimedia/blubber-buildkit:v0.11.1]
}

Sounds like an issue with Release Pipeline (Blubber) maybe that the recently merged patch you found or an issue with a Jenkins update (but AFAIK we haven't touched anything on the CI Jenkins.

Change 895673 had a related patch set uploaded (by Hashar; author: Hashar):

[integration/pipelinelib@master] Revert "Allow more BuildKit frontend image names"

https://gerrit.wikimedia.org/r/895673

Change 895673 merged by Hashar:

[integration/pipelinelib@master] Revert "Allow more BuildKit frontend image names"

https://gerrit.wikimedia.org/r/895673

@cjming thank you for the very well crafted issue report! @elukey mentioned the same issue earlier today and I believe the revert has fixed it. I did a recheck on https://gerrit.wikimedia.org/r/c/mediawiki/libs/metrics-platform/+/892628 and apparently it is running properly now.

hashar claimed this task.

Just noting that the specific CPS mismatch here is the use of a CPS transformed method in a constructor. Constructors are never CPS transformed.

The follow-up patch marks parseImageRef with @NonCPS which resolves the issue.

https://gerrit.wikimedia.org/r/c/integration/pipelinelib/+/896056/