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

Matrix parent build shouldn't consume an executor.

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • matrix-project-plugin
    • None
    • Platform: All, OS: All

      Hi,

      On a multi-configuration project, I encounter a systematic deadlock because the
      parent job and one of its child are queued on the same node.

      The configuration matrix is as follows:
      [x] Build on multiple nodes
      [-] Individual nodes
      [x] APOLLON (apollon)
      [x] CHRONOS (chronos)
      [x] DEMETER (demeter)
      [ ] EOS (eos)
      [x] EROS (eros)
      [x] PAN (pan)
      [x] PONTOS (pontos)
      [ ] master (the master Hudson node)
      [+] Labels
      [ ] Axes

      Here is the console output:

      started
      Building remotely on PONTOS
      Triggering label=PAN
      Triggering label=APOLLON
      Triggering label=DEMETER
      Triggering label=PONTOS
      Triggering label=EROS
      Triggering label=CHRONOS

      All jobs except the ones on "PONTOS" successfully terminate.
      The parent job keeps executing, waiting for all its children termination, but it
      never stops as the child job supposed to run on "PONTOS" remains in the build queue.

      Enabling the master Hudson node has no effect. Its corresponding job also
      remains in the build queue.

      Thank you for reading.

      Regards,
      Regis.

          [JENKINS-936] Matrix parent build shouldn't consume an executor.

          TimoTM added a comment - - edited

          We have environment where some slaves (executing tests) do not have svn client installed. After upgrading to 1.337 (I don't know if it was just coincidence), multiconfiguration parent jobs started to get executed on such slaves. At least jobs that have been configured to do SCM polling fail in that point.

          Is there no way to tell Hudson not to build the parent on such a slave? ("leave this machine for tied jobs only" has been configured)

          TimoTM added a comment - - edited We have environment where some slaves (executing tests) do not have svn client installed. After upgrading to 1.337 (I don't know if it was just coincidence), multiconfiguration parent jobs started to get executed on such slaves. At least jobs that have been configured to do SCM polling fail in that point. Is there no way to tell Hudson not to build the parent on such a slave? ("leave this machine for tied jobs only" has been configured)

          Axel Heider added a comment -

          Problem appears again with Hudson V1.369 wit a windows master and a linux slave node. I have two executors on the slave node and two matrix jobs tied to it (via tie-matrix-partent plugin and all matrix job). When they were started via SVN checkin the matrix job 1 parent took executor 1 and matrix job 2 parent took executor 2. Then both started their matrix-config jobs, but none can run as executors are blocked. I had to kill one parent job to resolve this. However, it keeps happening again.

          Axel Heider added a comment - Problem appears again with Hudson V1.369 wit a windows master and a linux slave node. I have two executors on the slave node and two matrix jobs tied to it (via tie-matrix-partent plugin and all matrix job). When they were started via SVN checkin the matrix job 1 parent took executor 1 and matrix job 2 parent took executor 2. Then both started their matrix-config jobs, but none can run as executors are blocked. I had to kill one parent job to resolve this. However, it keeps happening again.

          I have a project running in multi-configuration mode and it seems to work fine, except that the parent job seems to run on a random slave, which becomes problematic. Is it possible add an option to tie the parent to a particular slave?

          Sagar Khushalani added a comment - I have a project running in multi-configuration mode and it seems to work fine, except that the parent job seems to run on a random slave, which becomes problematic. Is it possible add an option to tie the parent to a particular slave?

          Axel Heider added a comment -

          there is a tie-matrix-parent pluging thatr became available some time ago, see http://wiki.jenkins-ci.org/display/JENKINS/Matrix+Tie+Parent+Plugin It will do what you want.

          Axel Heider added a comment - there is a tie-matrix-parent pluging thatr became available some time ago, see http://wiki.jenkins-ci.org/display/JENKINS/Matrix+Tie+Parent+Plugin It will do what you want.

          Tzuchien added a comment -

          What is the current status of this long-lived issue, please? According to the release note, this issued has been resolved in 1.337. I didn't have this issue with 1.368, but recently after I've upgraded to 1.382, it has just appeared again.

          Tzuchien added a comment - What is the current status of this long-lived issue, please? According to the release note, this issued has been resolved in 1.337. I didn't have this issue with 1.368, but recently after I've upgraded to 1.382, it has just appeared again.

          The original issue, which is that the matrix parent build consumes an executor, is fixed indeed in 1.337. In the executor table, the parent build will show up without an executor number — think of it as getting executed in a temporary executor.

          People then started talking about other related but different issues, such as the fact that the matrix parent execution cannot be tied to a specific node.

          Since this issue is getting overloaded with multiple things, I'm closing this bug once and for all.

          If you think you hit a bug, please open a new one.

          Thanks!

          Kohsuke Kawaguchi added a comment - The original issue, which is that the matrix parent build consumes an executor, is fixed indeed in 1.337. In the executor table, the parent build will show up without an executor number — think of it as getting executed in a temporary executor. People then started talking about other related but different issues, such as the fact that the matrix parent execution cannot be tied to a specific node. Since this issue is getting overloaded with multiple things, I'm closing this bug once and for all. If you think you hit a bug, please open a new one . Thanks!

          I agree with Kohsuke: closed.

          Régis Desgroppes added a comment - I agree with Kohsuke: closed.

          I still have this issue on latest LTS. It blocks our executors when Restrict label for matrix job is used!

          Ireneusz Makowski added a comment - I still have this issue on latest LTS. It blocks our executors when Restrict label for matrix job is used!

          See my latest comment

          Ireneusz Makowski added a comment - See my latest comment

          Daniel Beck added a comment -

          It blocks our executors when Restrict label for matrix job is used!

          Please file a new issue, and include specific information on how to reproduce this.

          https://wiki.jenkins-ci.org/display/JENKINS/How+to+report+an+issue

          Daniel Beck added a comment - It blocks our executors when Restrict label for matrix job is used! Please file a new issue, and include specific information on how to reproduce this. https://wiki.jenkins-ci.org/display/JENKINS/How+to+report+an+issue

            rdesgroppes Régis Desgroppes
            rdesgroppes Régis Desgroppes
            Votes:
            24 Vote for this issue
            Watchers:
            10 Start watching this issue

              Created:
              Updated:
              Resolved: