-
Bug
-
Resolution: Unresolved
-
Minor
The `ws` step leases a workspace path, if the same path is asked to be leased again when one lease is already active; the `ws` step will lease with attaching `@2`.
However the same path can be leased again, when the first lease is still existing, if the controller is restarted mid-way of the build.
Steps to reproduce
- Attach an agent to jenkins controller, and run the below pipeline.
- When the pipeline enters first `ws` scope, it will print a log saying restart the controller. Restart the controller. However the build will still keep going on the agent.
- controller comes online and logs will show the pipeline entered the second `ws` , but leased the same workspace.
- pipeline code
String wSpacePath = "/tmp/my-workspace" int sleepSeconds = 100node("spider-agent1") { ws(wSpacePath) { echo "Sleeping for 100 secs; restart jenkins now, but keep the agent running. The same workspace will be leased again in the nested ws" sleep sleepSeconds ws(wSpacePath) { echo "Executing inside nested workspace, pipeline completed" } } }
The same issue can be reproduced in another way too.
If a pipeline with a single `ws` is scheduled on agent with 2 executors, and controller restarts midway. When the controller comes online, start another build on the same agent. Two parallel builds will be running on the same agent, both will lease the same workspace in the `ws` step.
If the controller wasn't restarted, `ws` would lease workspace with `@2` in the second build - which is the expected behavior.
It is possible that this bug occurred during this change: https://github.com/jenkinsci/workflow-durable-task-step-plugin/pull/180
- is caused by
-
JENKINS-49707 Auto retry for elastic agents after channel closure
- Resolved