timja / jenkins-gh-issues-poc-06-18

0 stars 0 forks source link

[JENKINS-66508] 2.289 - "There should not have been any compilation from this call." #1631

Open timja opened 3 years ago

timja commented 3 years ago

We use grapes for loading external libraries - and startup works clean with 

groovy.grape.Grape.grab(group: 'com.konghq', module: 'unirest-java', version: '2.4.03', classifier: 'standalone')

in https://github.com/opendevstack/ods-core/blob/master/jenkins/master/configuration/init.groovy.d/ods-jenkins-shared-library.groovy#L94  

The reason we do this pre-loading is described with links to other jenkins issues 

ods-core/ods-jenkins-shared-library.groovy at master · opendevstack/ods-core (github.com)

 -------------------------

Startup logs:

2021-08-31 14:51:41 INFO jenkins.InitReactorRunner$1 onAttained Configuration for all jobs updated

2021-08-31 14:51:41 INFO jenkins.util.groovy.GroovyHookScript execute Executing /var/lib/jenkins/init.groovy.d/ods-jenkins-shared-library.groovy

2021-08-31 14:51:41 INFO hudson.model.AsyncPeriodicWork lambda$doRun$0 Started Download metadata 2021-08-31 14:51:41 INFO hudson.model.AsyncPeriodicWork lambda$doRun$0 Finished Download metadata. 74 ms

INFO: Adding global library ods-jenkins-shared-library: https://b.....y.git

INFO: Library ods-jenkins-shared-library exists already

INFO: Replacing library ods-jenkins-shared-library

INFO: Grabbing grapes to avoid race condition during parallel compilation ...

2021-08-31 14:51:49 INFO jenkins.util.groovy.GroovyHookScript execute Executing /var/lib/jenkins/init.groovy.d/proxy.groovy No proxy config found

2021-08-31 14:51:49 INFO jenkins.util.groovy.GroovyHookScript execute Executing /var/lib/jenkins/init.groovy.d/sonarqube.groovy

2021-08-31 14:51:50 INFO jenkins.util.groovy.GroovyHookScript execute Executing /var/lib/jenkins/init.groovy.d/update-center-init.groovy

2021-08-31 14:51:50 INFO jenkins.util.groovy.GroovyHookScript execute Executing /var/lib/jenkins/init.groovy.d/url.groovy

2021-08-31 14:51:50 INFO hudson.util.Retrier start Attempt #1 to do the action check updates server INFO: JenkinsLocationConfiguration - namespace of pod is: grd-cd INFO: JenkinsLocationConfiguration - URL to Jenkins is: https://jenkins-grd-cd.apps.....

2021-08-31 14:51:51 INFO jenkins.InitReactorRunner$1 onAttained Completed initialization

2021-08-31 14:51:51 WARNING jenkins.branch.WorkspaceLocatorImpl getWorkspaceRoot JENKINS-2111 path sanitization ineffective when using legacy Workspace Root Directory ‘${ITEM_ROOTDIR}/workspace’; switch to ‘${JENKINS_HOME}/workspace/${ITEM_FULL_NAME}’ as in JENKINS-8446 / JENKINS-21942

2021-08-31 14:51:51 INFO io.fabric8.jenkins.openshiftsync.BuildConfigWatcher start Now handling startup build configs!!

2021-08-31 14:51:51 INFO hudson.WebAppMain$3 run Jenkins is fully up and running 

-------------------------

During runtime of a job (which uses the above as shared library, imported with @library) we get.

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
/var/lib/jenkins/jobs/grd-cd/jobs/grd-cd-terraform-master/builds/2/libs/ods-jenkins-shared-library/src/org/ods/services/BitbucketService.groovy: 4: unable to resolve class kong.unirest.Unirest
@ line 4, column 1.
import kong.unirest.Unirest
^

1 error

at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:958)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:605)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:554)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:254)
at groovy.lang.GroovyClassLoader.recompile(GroovyClassLoader.java:761)
at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:718)
at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:787)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:576)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell$TimingLoader.loadClass(CpsGroovyShell.java:170)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:576)
at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:677)
at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:545)
at org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScript(ClassNodeResolver.java:185)
Caused: BUG! exception in phase 'semantic analysis' in source unit 'WorkflowScript' The lookup for org.ods.services.BitbucketService caused a failed compilaton. There should not have been any compilation from this call.
at org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScript(ClassNodeResolver.java:190)
at org.codehaus.groovy.control.ClassNodeResolver.findClassNode(ClassNodeResolver.java:170)
at org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNodeResolver.java:126)
at org.codehaus.groovy.control.ResolveVisitor.resolveToOuter(ResolveVisitor.java:676)
at org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:313)
at org.codehaus.groovy.control.ResolveVisitor.visitClass(ResolveVisitor.java:1236)
at org.codehaus.groovy.control.ResolveVisitor.startResolving(ResolveVisitor.java:176)
at org.codehaus.groovy.control.CompilationUnit$12.call(CompilationUnit.java:663)
at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:943)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:605)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:554)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:142)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:127)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:571)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:523)
at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:337)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)

 

This is definetely a regression from an earlier version (2.277 / Openshift 3.x)


Originally reported by clemensutschig, imported from: 2.289 - "There should not have been any compilation from this call."
  • status: Open
  • priority: Major
  • resolution: Unresolved
  • imported: 2022/01/10
timja commented 3 years ago

clemensutschig:

so I added "@Grab(group='com.konghq', module='unirest-java', version='2.4.03', classifier='standalone')" into BitbucketService - and this makes it work,... it seems this a classloader topic that changed?!

timja commented 3 years ago

timja:

not sure what would have impacted this, but the general consensus is this with groovy grapes: https://issues.jenkins.io/browse/JENKINS-48974?focusedCommentId=410568&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-410568

There are known issues and upgrading groovy is difficult