Parallel blocks in node blocks cause executors to be persisted outside of the node block

This issue is archived. You can view it, but you can't modify it. Learn more

XMLWordPrintable

    • Pipeline Groovy 2.56

      When a parallel step is nested in a node step, the executor associated with the node appears to outlive both the parallel and node steps. This leads to the executor being rehydrated when a pipeline is restarted, even if the pipeline is outside of the node block.

      Reproduction test case:

      @Test public void shouldNotLeakExecutorsViaContextVars() {
          story.then(r -> {
              DumbSlave s = r.createOnlineSlave();
              WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "demo");
              p.setDefinition(new CpsFlowDefinition("node('" + s.getNodeName() + "') {\n" +
                      "  parallel one: {\n" +
                      "    echo '" + s.getNodeName() + "'\n" +
                      "  }\n" +
                      "}\n" +
                      "semaphore 'wait'\n", false));
              WorkflowRun b = p.scheduleBuild2(0).waitForStart();
              SemaphoreStep.waitForStart("wait/1", b);
              r.jenkins.removeNode(s);
          });
          story.then(r -> {
              WorkflowRun b = r.jenkins.getItemByFullName("demo", WorkflowJob.class).getBuildByNumber(1);
              SemaphoreStep.waitForStart("wait/1", b);
              SemaphoreStep.success("wait/1", null);
              while (b.isBuilding()) {
                  r.assertLogNotContains("Jenkins doesn’t have label", b);
                  Thread.sleep(100);
              }
              r.assertBuildStatusSuccess(b);
          });
      }
      

      This test currently fails because the pipeline waits for the 'Test' agent to become available after restarting even though we are not in a node block.

            Assignee:
            Devin Nusbaum
            Reporter:
            Devin Nusbaum
            Archiver:
            Jenkins Service Account

              Created:
              Updated:
              Resolved:
              Archived: