Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-39134

com.google.inject.CreationException after resuming build in script {} or withMaven {}

      I use a build pipeline to execute several maven tasks. My pipeline code looks like this example:

      stage("checkout git") {
         // .....
      }
      
      stage("build app") {
        node {
          withMaven(maven:'Maven_3_3_9', mavenLocalRepo: '.repository',mavenSettingsConfig:'my-config') {
            sh 'mvn clean install'
        }
      }
      
      stage("deploy app") {
         node {
           withMaven(maven:'Maven_3_3_9', mavenLocalRepo: '.repository',mavenSettingsConfig:'my-config') {
             sh 'mvn deploy'
         }
      }
      

      If i use the "Safe Restart Plugin" or the "Prepare for Restart Option" and restart the Jenkins the pipeline will crash when the next maven task in the pipeline is executed and throws the following error.

      [Pipeline] {
      [Pipeline] withMaven
      [Pipeline] // withMaven
      [Pipeline] }
      [Pipeline] // node
      [Pipeline] }
      [Pipeline] // stage
      [Pipeline] End of Pipeline
      hudson.remoting.ProxyException: com.google.inject.CreationException: Guice creation errors:
      
      1) A just-in-time binding to org.jenkinsci.plugins.pipeline.maven.WithMavenStep was already configured on a parent injector.
        at org.jenkinsci.plugins.workflow.steps.ContextParameterModule.configure(ContextParameterModule.java:37)
      
      1 error
      	at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:448)
      	at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:155)
      	at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107)
      	at com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:230)
      	at com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:237)
      	at jenkins.ProxyInjector.createChildInjector(ProxyInjector.java:110)
      	at org.jenkinsci.plugins.workflow.steps.AbstractStepImpl.prepareInjector(AbstractStepImpl.java:43)
      	at org.jenkinsci.plugins.workflow.steps.AbstractStepImpl.start(AbstractStepImpl.java:36)
      	at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:182)
      	at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:126)
      	at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108)
      	at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)
      	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
      	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
      	at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.methodCall(DefaultInvoker.java:16)
      	at maven.call(/var/lib/jenkins/jobs/jndiagent-INTEGRATION/builds/27/libs/com.timocom.jenkins.pipeline/vars/maven.groovy:22)
      	at WorkflowScript.run(WorkflowScript:44)
      	at ___cps.transform___(Native Method)
      	at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:48)
      	at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:109)
      	at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:82)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
      	at com.cloudbees.groovy.cps.impl.ClosureBlock.eval(ClosureBlock.java:46)
      	at com.cloudbees.groovy.cps.Next.step(Next.java:58)
      	at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:154)
      	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:18)
      	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:33)
      	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:30)
      	at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108)
      	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:30)
      	at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:163)
      	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:324)
      	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$100(CpsThreadGroup.java:78)
      	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:236)
      	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:224)
      	at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:63)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112)
      	at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      	at java.lang.Thread.run(Thread.java:745)
      Finished: FAILURE
      

      All the documentations say that pipeline jobs are resilient to Jenkins restarts but it seems that there is a problem with the maven enviroment created by the "withMavenStep".

          [JENKINS-39134] com.google.inject.CreationException after resuming build in script {} or withMaven {}

          jglick I think you're right. I didn't see it at first but my problem was with the script tag of the pipeline-model-definition

          Erwin Oldenkamp added a comment - jglick I think you're right. I didn't see it at first but my problem was with the script tag of the pipeline-model-definition

          Jesse Glick added a comment -

          Without JENKINS-34488, you get a more opaque error message.

          Jesse Glick added a comment - Without JENKINS-34488 , you get a more opaque error message.

          Jesse Glick added a comment -

          I found what these two steps have in common but is unique to them: they are block-scoped, the execution injects the step, and the step has a no-argument constructor. Apparently this makes Guice blow up. Reproduced in a minimal test in workflow-step-api and looking into the root cause.

          Jesse Glick added a comment - I found what these two steps have in common but is unique to them: they are block-scoped, the execution injects the step, and the step has a no-argument constructor. Apparently this makes Guice blow up. Reproduced in a minimal test in workflow-step-api and looking into the root cause.

          Jesse Glick added a comment -

          Could not find a way to make AbstractStepExecutionImpl work in such cases. Considering deprecating it.

          Jesse Glick added a comment - Could not find a way to make AbstractStepExecutionImpl work in such cases. Considering deprecating it.

          Code changed in jenkins
          User: Jesse Glick
          Path:
          pipeline-model-definition/pom.xml
          http://jenkins-ci.org/commit/pipeline-model-definition-plugin/4912a56312a45cf58dab1d0f5e4227ab9bb9fc00
          Log:
          Updating workflow-api dep to pick up JENKINS-34488 fix, making JENKINS-39134 easier to track.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: pipeline-model-definition/pom.xml http://jenkins-ci.org/commit/pipeline-model-definition-plugin/4912a56312a45cf58dab1d0f5e4227ab9bb9fc00 Log: Updating workflow-api dep to pick up JENKINS-34488 fix, making JENKINS-39134 easier to track.

          Code changed in jenkins
          User: Jesse Glick
          Path:
          pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/steps/ScriptStep.java
          pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/steps/ScriptStepTest.java
          http://jenkins-ci.org/commit/pipeline-model-definition-plugin/bb3b9c27dd15eef9980aa296278a836767344bbd
          Log:
          JENKINS-39134 Avoiding Guice error by not injecting ScriptStep (which was unused anyway).

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/steps/ScriptStep.java pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/steps/ScriptStepTest.java http://jenkins-ci.org/commit/pipeline-model-definition-plugin/bb3b9c27dd15eef9980aa296278a836767344bbd Log: JENKINS-39134 Avoiding Guice error by not injecting ScriptStep (which was unused anyway).

          Code changed in jenkins
          User: Andrew Bayer
          Path:
          pipeline-model-api/src/main/resources/index.jelly
          pipeline-model-declarative-agent/src/main/resources/index.jelly
          pipeline-model-definition/pom.xml
          pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/steps/ScriptStep.java
          pipeline-model-definition/src/main/resources/index.jelly
          pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/steps/ScriptStepTest.java
          pipeline-stage-tags-metadata/src/main/resources/index.jelly
          http://jenkins-ci.org/commit/pipeline-model-definition-plugin/e27901b50fb3896820cdb843060e5a922a4b6127
          Log:
          Merge pull request #59 from jglick/CreationException-JENKINS-39134

          JENKINS-39134 Fix CreationException when resuming inside script {}

          Compare: https://github.com/jenkinsci/pipeline-model-definition-plugin/compare/87add2604c94...e27901b50fb3

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Andrew Bayer Path: pipeline-model-api/src/main/resources/index.jelly pipeline-model-declarative-agent/src/main/resources/index.jelly pipeline-model-definition/pom.xml pipeline-model-definition/src/main/java/org/jenkinsci/plugins/pipeline/modeldefinition/steps/ScriptStep.java pipeline-model-definition/src/main/resources/index.jelly pipeline-model-definition/src/test/java/org/jenkinsci/plugins/pipeline/modeldefinition/steps/ScriptStepTest.java pipeline-stage-tags-metadata/src/main/resources/index.jelly http://jenkins-ci.org/commit/pipeline-model-definition-plugin/e27901b50fb3896820cdb843060e5a922a4b6127 Log: Merge pull request #59 from jglick/CreationException- JENKINS-39134 JENKINS-39134 Fix CreationException when resuming inside script {} Compare: https://github.com/jenkinsci/pipeline-model-definition-plugin/compare/87add2604c94...e27901b50fb3

          Code changed in jenkins
          User: Jesse Glick
          Path:
          pom.xml
          src/main/java/org/jenkinsci/plugins/pipeline/maven/WithMavenStepExecution.java
          src/test/java/org/jenkinsci/plugins/pipeline/maven/WithMavenStepTest.java
          http://jenkins-ci.org/commit/pipeline-maven-plugin/a2729547dc0c545043ad882e48b8de60623490db
          Log:
          JENKINS-39134 Workaround for Pipeline/Guice bug.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: pom.xml src/main/java/org/jenkinsci/plugins/pipeline/maven/WithMavenStepExecution.java src/test/java/org/jenkinsci/plugins/pipeline/maven/WithMavenStepTest.java http://jenkins-ci.org/commit/pipeline-maven-plugin/a2729547dc0c545043ad882e48b8de60623490db Log: JENKINS-39134 Workaround for Pipeline/Guice bug.

          Code changed in jenkins
          User: Alvaro Lobato
          Path:
          pom.xml
          src/main/java/org/jenkinsci/plugins/pipeline/maven/WithMavenStep.java
          src/main/java/org/jenkinsci/plugins/pipeline/maven/WithMavenStepExecution.java
          src/main/resources/index.jelly
          src/test/java/org/jenkinsci/plugins/pipeline/maven/WithMavenStepTest.java
          http://jenkins-ci.org/commit/pipeline-maven-plugin/0fbb0d2e553eae676519b496918aaf54621345a7
          Log:
          Merge pull request #11 from jglick/CreationException-JENKINS-39134

          JENKINS-39134 Work around Guice problem

          Compare: https://github.com/jenkinsci/pipeline-maven-plugin/compare/a1bd50adb05f...0fbb0d2e553e

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Alvaro Lobato Path: pom.xml src/main/java/org/jenkinsci/plugins/pipeline/maven/WithMavenStep.java src/main/java/org/jenkinsci/plugins/pipeline/maven/WithMavenStepExecution.java src/main/resources/index.jelly src/test/java/org/jenkinsci/plugins/pipeline/maven/WithMavenStepTest.java http://jenkins-ci.org/commit/pipeline-maven-plugin/0fbb0d2e553eae676519b496918aaf54621345a7 Log: Merge pull request #11 from jglick/CreationException- JENKINS-39134 JENKINS-39134 Work around Guice problem Compare: https://github.com/jenkinsci/pipeline-maven-plugin/compare/a1bd50adb05f...0fbb0d2e553e

          Code changed in jenkins
          User: Jesse Glick
          Path:
          src/main/java/org/jenkinsci/plugins/workflow/support/pickles/serialization/RiverReader.java
          http://jenkins-ci.org/commit/workflow-support-plugin/ddadc4b61b4b438946550e530f18c1b3b47cc46a
          Log:
          JENKINS-39134 Mechanism to allow tests to intercept program.dat deserialization.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: src/main/java/org/jenkinsci/plugins/workflow/support/pickles/serialization/RiverReader.java http://jenkins-ci.org/commit/workflow-support-plugin/ddadc4b61b4b438946550e530f18c1b3b47cc46a Log: JENKINS-39134 Mechanism to allow tests to intercept program.dat deserialization.

            jglick Jesse Glick
            henok Hendrik Brinkmann
            Votes:
            3 Vote for this issue
            Watchers:
            10 Start watching this issue

              Created:
              Updated:
              Resolved: