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

[JENKINS-42048] Fix durable pipeline PID NumberFormatException #157

Merged
merged 11 commits into from
Jul 12, 2017

Conversation

carlossg
Copy link
Contributor

@carlossg carlossg commented May 4, 2017

JENKINS-42048

Fix the command execution so the pid is correctly stored in the pid file
Use nohup so processes can survive disconnection
Add test for ContainerExecDecorator

The problem is that we still need a way to get the exit code from the commands to return it in ContainerExecProc#join.
I don't see any other way than to print it to the output and parse it.

In the meantime there are a lot of warnings in the log

May 04, 2017 8:20:49 PM org.jenkinsci.plugins.durabletask.ProcessLiveness isAlive
WARNING: org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator$1@30f365ca; decorates hudson.Launcher$RemoteLauncher@7870506a on hudson.remoting.Channel@20b6d163:Channel to /192.168.64.8 does not seem able to determine whether processes are alive or not

Fix the command execution so the pid is correctly stored in the pid file
Use nohup so processes can survive disconnection
Add test for ContainerExecDecorator
@carlossg carlossg requested a review from iocanel May 4, 2017 18:27
@carlossg
Copy link
Contributor Author

carlossg commented May 4, 2017

The warnings come from https://github.com/jenkinsci/durable-task-plugin/blob/master/src/main/java/org/jenkinsci/plugins/durabletask/ProcessLiveness.java#L87 where it executes ps -o pid= 9999 and we always return 0 in ContainerExecProc#join

In any case that command will always return 0 in busybox, and maybe the same in other distros. Something to have into account

Copy link
Contributor

@iocanel iocanel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks good to me!

proc = new ContainerExecProc(watch, alive, finished);
return proc;
}

@Override
public void kill(Map<String, String> modelEnvVars) throws IOException, InterruptedException {
// String cookie = modelEnvVars.get(COOKIE_VAR);
// TODO we need to use the cookie for something
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't really understand that comment.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is what @jglick was referring to in the initial PR, IIUC we need to use the cookie to know what process to kill

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@carlossg
Copy link
Contributor Author

carlossg commented May 5, 2017

@iocanel do you know if there is a way to get the exit code of a command launched through the exec api ? I've only seen methods to get input and output

@carlossg
Copy link
Contributor Author

carlossg commented May 5, 2017

we already do that. But we are just piping chars to the server and reading the output.
My only idea is to send an echo $? to get the exit code and then parse the output

@iocanel
Copy link
Contributor

iocanel commented May 5, 2017

@carlossg: can't we just grab the value from the onClose method?

@iocanel
Copy link
Contributor

iocanel commented May 5, 2017

I guess that this code, is related to websockets rather than the exec itself.

@carlossg carlossg mentioned this pull request Jun 9, 2017
@carlossg
Copy link
Contributor Author

carlossg commented Jun 9, 2017

@iocanel can you take a look again, this is working for me in multicontainer example.
Only kill needs to be implemented, but I'll leave it for later

@iocanel
Copy link
Contributor

iocanel commented Jun 9, 2017

Will look again shortly!

@jwhitcraft
Copy link

jwhitcraft commented Jun 13, 2017

@carlossg and @iocanel

I just tried this on my test server I and i'm seeing this warning popup more that i think it should be.

Jun 13, 2017 4:11:53 PM WARNING org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator$ExitCodeOutputStream getExitCode
Unable to find "EXITCODE" in ODE   1exit

Edit here is the full log from all the org.csanchez.jenkins.plugins.kubernetes.pipeline.* Classes

Jun 13, 2017 4:43:26 PM FINE org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerStepExecution Starting container step. Jun 13, 2017 4:43:37 PM FINEST org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator Executing shell script inside container [nomad] of pod [jenkins-slave-pk7xk-hln0x] Jun 13, 2017 4:43:37 PM FINEST org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator Executing command: "nohup" "sh" "-c" "echo \$\$ > '/home/jenkins/workspace/nomad_test/sources@tmp/durable-0cf6fafa/pid'; jsc=durable-8933846f6b831b7e2e6e882ff1d98d5c; JENKINS_SERVER_COOKIE=\$jsc '/home/jenkins/workspace/nomad_test/sources@tmp/durable-0cf6fafa/script.sh' > '/home/jenkins/workspace/nomad_test/sources@tmp/durable-0cf6fafa/jenkins-log.txt' 2>&1; echo \$? > '/home/jenkins/workspace/nomad_test/sources@tmp/durable-0cf6fafa/jenkins-result.txt'" printf "EXITCODE %3d" $?; exit

Jun 13, 2017 4:43:37 PM FINEST org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator
Executing shell script inside container [nomad] of pod [jenkins-slave-pk7xk-hln0x]
Jun 13, 2017 4:43:37 PM FINEST org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator
Executing command: "ps" "-o" "pid=" "9999"
printf "EXITCODE %3d" $?; exit

Jun 13, 2017 4:43:37 PM FINEST org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecProc
Waiting for websocket to close on command finish (java.util.concurrent.CountDownLatch@5e49b079[Count = 0])
Jun 13, 2017 4:43:37 PM FINEST org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator
onClose : java.util.concurrent.CountDownLatch@5e49b079[Count = 0]
Jun 13, 2017 4:43:37 PM FINEST org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecProc
Command is finished (java.util.concurrent.CountDownLatch@5e49b079[Count = 0])
Jun 13, 2017 4:43:37 PM WARNING org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator$ExitCodeOutputStream getExitCode
Unable to find "EXITCODE" in ODE 1exit

Jun 13, 2017 4:43:37 PM FINEST org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator
Executing shell script inside container [nomad] of pod [jenkins-slave-pk7xk-hln0x]
Jun 13, 2017 4:43:37 PM FINEST org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator
Executing command: "ps" "-o" "pid=" "12"
printf "EXITCODE %3d" $?; exit

Jun 13, 2017 4:43:37 PM FINEST org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecProc
Waiting for websocket to close on command finish (java.util.concurrent.CountDownLatch@7067594a[Count = 0])
Jun 13, 2017 4:43:37 PM FINEST org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator
onClose : java.util.concurrent.CountDownLatch@7067594a[Count = 0]
Jun 13, 2017 4:43:37 PM FINEST org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecProc
Command is finished (java.util.concurrent.CountDownLatch@7067594a[Count = 0])
Jun 13, 2017 4:43:37 PM WARNING org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator$ExitCodeOutputStream getExitCode
Unable to find "EXITCODE" in ODE 0exit

Jun 13, 2017 4:43:37 PM FINEST org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator
Executing shell script inside container [nomad] of pod [jenkins-slave-pk7xk-hln0x]
Jun 13, 2017 4:43:37 PM FINEST org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator
Executing command: "nohup" "sh" "-c" "echo $$ > '/home/jenkins/workspace/nomad_test@tmp/durable-95ef8e82/pid'; jsc=durable-bc5c048a87ac48cd0600fa956ee62c00; JENKINS_SERVER_COOKIE=$jsc '/home/jenkins/workspace/nomad_test@tmp/durable-95ef8e82/script.sh' > '/home/jenkins/workspace/nomad_test@tmp/durable-95ef8e82/jenkins-log.txt' 2>&1; echo $? > '/home/jenkins/workspace/nomad_test@tmp/durable-95ef8e82/jenkins-result.txt'"
printf "EXITCODE %3d" $?; exit

Jun 13, 2017 4:43:37 PM FINEST org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator
onClose : java.util.concurrent.CountDownLatch@466cea84[Count = 0]
Jun 13, 2017 4:43:41 PM FINEST org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator
onClose : java.util.concurrent.CountDownLatch@3a18410f[Count = 0]

My pipeline is very simple, i only pulled out the build part, the scm is working fine.

stage('build') {
    podTemplate(label: "mobile", inheritFrom: "base",
            containers: [
                containerTemplate(name: 'mobile', image: "<my registry>/mobile-builder:latest", ttyEnabled: true, command: 'cat', args: '')
            ]) {
        node("mobile") {
            container('mobile') {
                dir('sources') {
                    unstash "mobile-sources"
                    sh """
                    tar -xzf mobile.tgz -C ../
                    """
                    // it never gets to here, the tar is abruptly ended, but if i comment out the tar it works just fine.
                    deleteDir()
                }

                sh """
                /build.sh -b v5_0 -n ${env.BUILD_NUMBER} -s qa -r ./mobile
                cd mobile; tar czf ../mobile.tar.gz mobile
                """

                stash includes: "mobile.tar.gz", name: 'mobile'
            }
        }
    }
}

@coreypobrien
Copy link

I started running this code to avoid https://issues.jenkins-ci.org/browse/JENKINS-40825. It's definitely improved, but today I ran into the Pipe not connected error when running a few parallel builds, so I'm not sure if it is entirely fixed.

Here's a sample stack:

java.io.IOException: Pipe not connected
	at java.io.PipedOutputStream.write(PipedOutputStream.java:140)
	at java.io.OutputStream.write(OutputStream.java:75)
	at org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator$1.launch(ContainerExecDecorator.java:176)
	at hudson.Launcher$ProcStarter.start(Launcher.java:384)
	at org.jenkinsci.plugins.durabletask.BourneShellScript.launchWithCookie(BourneShellScript.java:157)
	at org.jenkinsci.plugins.durabletask.FileMonitoringTask.launch(FileMonitoringTask.java:64)
	at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.start(DurableTaskStep.java:167)
	at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:224)
	at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:150)
	at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108)
	at sun.reflect.GeneratedMethodAccessor210.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1215)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024)
	at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
	at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:151)
	at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:21)
	at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:115)
	at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:149)
	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:146)
	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:123)
	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:123)
	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:123)
	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:123)
	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:123)
	at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:16)
	at WorkflowScript.run(WorkflowScript:41)
	at ___cps.transform___(Native Method)
	at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:57)
	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.GeneratedMethodAccessor195.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:748)

@spunkedy
Copy link

Any idea when this will get merged in and released?

@carlossg carlossg merged commit 5c87246 into master Jul 12, 2017
@carlossg carlossg deleted the JENKINS-42048-pid branch July 12, 2017 07:12
@laurentverbruggen
Copy link

@carlossg any idea when a new version containing this pull request will be released?

@brianwallace
Copy link

I rebuilt the kubernetes-plugin from SHA 050e559 and continue to see the Pipe Not Connected error. Stack trace is below. We are running Jenkins 2.46.2-alpine.

It definitely seems that the rate of occurrence is related to the concurrency -- i.e. the larger number of ongoing builds and the more container ongoing containers seems to increase the likelihood of seeing this error. We use the pipeline plugin with many parallelized builds so we often have many containerized builds ongoing at once -- I believe that is part of the reason we see this error so frequently.

java.io.IOException: Pipe not connected
	at java.io.PipedOutputStream.write(PipedOutputStream.java:140)
	at java.io.OutputStream.write(OutputStream.java:75)
	at org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator$1.launch(ContainerExecDecorator.java:176)
	at hudson.Launcher$ProcStarter.start(Launcher.java:384)
	at org.jenkinsci.plugins.durabletask.BourneShellScript.launchWithCookie(BourneShellScript.java:157)
	at org.jenkinsci.plugins.durabletask.FileMonitoringTask.launch(FileMonitoringTask.java:64)
	at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.start(DurableTaskStep.java:167)
	at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:224)
	at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:150)
	at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108)
	at sun.reflect.GeneratedMethodAccessor346.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1215)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024)
	at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
	at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:151)
	at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:21)
	at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:115)
	at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:149)
	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:146)
	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:123)
	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:123)
	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:123)
	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:123)
	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:123)
	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:123)
	at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:16)
	at WorkflowScript.run(WorkflowScript:336)
	at ___cps.transform___(Native Method)
	at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:57)
	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.GeneratedMethodAccessor341.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.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:103)
	at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:82)
	at sun.reflect.GeneratedMethodAccessor341.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.ContinuationGroup.methodCall(ContinuationGroup.java:60)
	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.GeneratedMethodAccessor341.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)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
7 participants