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

Jenkins resume throwed NPE for org.jenkinsci.plugins.workflow.cps.EnvActionImpl getProperty

    • workflow-cps 2706.v71dd22b_c5a_a_2

      I followed the guide on https://jenkins.io/doc/book/pipeline/shared-libraries/ and passed env to library classes, but hit NPE when jenkins get restarted, sample code

      class Tower implements Serializable {
          def steps;
          def env;
      
          Tower(steps, env) {
              this.steps = steps
              this.env = env
          }
      
          def lift() {
              steps.echo "build number is :${env.BUILD_NUMBER}"
              steps.sleep time: 3, unit: 'MINUTES'  //restart jenkins when sleeping
              //env.BUILD_NUMBER is NULL if resumed from restart
              steps.echo "build number is :${env.BUILD_NUMBER}"
          }
      }
      

      Full test code attached

      Jul 05, 2017 8:10:55 AM org.jenkinsci.plugins.workflow.cps.EnvActionImpl getProperty
      WARNING: null
      java.lang.NullPointerException
      	at org.jenkinsci.plugins.workflow.cps.EnvActionImpl.getEnvironment(EnvActionImpl.java:69)
      	at org.jenkinsci.plugins.workflow.cps.EnvActionImpl.getProperty(EnvActionImpl.java:84)
      	at org.jenkinsci.plugins.workflow.cps.EnvActionImpl.getProperty(EnvActionImpl.java:52)
      	at org.codehaus.groovy.runtime.InvokerHelper.getProperty(InvokerHelper.java:174)
      	at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.getProperty(ScriptBytecodeAdapter.java:456)
      	at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.getProperty(DefaultInvoker.java:33)
      	at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
      	at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.get(PropertyishBlock.java:74)
      	at com.cloudbees.groovy.cps.LValueBlock$GetAdapter.receive(LValueBlock.java:30)
      	at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.fixName(PropertyishBlock.java:66)
      	at sun.reflect.GeneratedMethodAccessor89.invoke(Unknown Source)
      	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.ConstantBlock.eval(ConstantBlock.java:21)
      	at com.cloudbees.groovy.cps.Next.step(Next.java:83)
      	at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:173)
      	at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:162)
      	at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:122)
      	at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:261)
      	at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:162)
      	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:19)
      	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:35)
      	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:32)
      	at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108)
      	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:32)
      	at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:174)
      	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:330)
      	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$100(CpsThreadGroup.java:82)
      	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:242)
      	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:230)
      	at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64)
      	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)
      
      

          [JENKINS-45327] Jenkins resume throwed NPE for org.jenkinsci.plugins.workflow.cps.EnvActionImpl getProperty

          Ted Xiao added a comment -

          similar issue: JENKINS-44861

          Ted Xiao added a comment - similar issue: JENKINS-44861

          Jesse Glick added a comment -

          I think you need to pass the whole script, not env in isolation.

          Jesse Glick added a comment - I think you need to pass the whole script , not env in isolation.

          HemangLavana added a comment -

          I am seeing similar issue. Providing a sample code on how to solve this issue would be really nice.

          HemangLavana added a comment - I am seeing similar issue. Providing a sample code on how to solve this issue would be really nice.

          We are facing a similar issue. What is the fix for this?

          Danrisha Young added a comment - We are facing a similar issue. What is the fix for this?

          Devin Nusbaum added a comment -

          The issue is that EnvActionImpl is currently Serializable but in fact it should not ever be serialized into the program or you will run into NPEs as listed above. See https://github.com/jenkinsci/workflow-cps-plugin/pull/539 for a fix.

          Devin Nusbaum added a comment - The issue is that EnvActionImpl is currently Serializable but in fact it should not ever be serialized into the program or you will run into NPEs as listed above. See https://github.com/jenkinsci/workflow-cps-plugin/pull/539 for a fix.

            dnusbaum Devin Nusbaum
            fengxx Ted Xiao
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: