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

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

    XMLWordPrintable

Details

    • Pipeline Groovy 2.56

    Description

      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.

      Attachments

        Issue Links

          Activity

            People

              dnusbaum Devin Nusbaum
              dnusbaum Devin Nusbaum
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: