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

Jobs waiting on input, grab an executor after restart

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • Jenkins 2.73.2
      pipeline-input-step-plugin 2.7

      We have several jobs that use the "input" pipeline step. This step is not inside a node block so they usually do not grab an executor when waiting for user input, as expected.

      We often have many of these waiting over our 200+ jobs which is not normally an issue.

      However, upon restarting (e.g. after upgrading plugins), these jobs resume and take up an executor. They appear in the left hand side and have logs like as follows:

      Deploy to prod?
      Proceed or Abort
      Resuming build at Tue Nov 07 12:12:56 GMT 2017 after Jenkins restart
      Waiting to resume part of Folder Name » Job Name » master #47: ???
      Waiting to resume part of Folder Name » Job Name » master #47: Waiting for next available executor
      Waiting to resume part of Folder Name » Job Name » master #47: Waiting for next available executor
      Waiting to resume part of Folder Name » Job Name » master #47: Waiting for next available executor

      The current workaround is to manually abort each one but this time consuming and problematic if we do not want to abort them yet.

      Here is a possibly relevant portion of our shared library code, which gets called from most of our projects Jenkinsfiles:

      The relevant section of the code looks similar to this:

      for (def index = 0; index < allDeployEnvironments.size(); index++) {
        def nextEnvironment = ""
        if (index + 1 < allDeployEnvironments.size()) {
          nextEnvironment = allDeployEnvironments.get(index + 1)
        }
      
        //snip lines relating to deplpoyment.
      
        if (nextEnvironment) {   
          try {
            stage("${nextEnvironment} deployment prompt") {
              timeout(time: 30, unit: 'DAYS') {
              echo "Prompting for deploy to ${nextEnvironment}"
              input("Deploy to ${nextEnvironment}?")
            }
          }
        } catch (Exception ex) {
          echo "Input timed out"
          currentBuild.result = 'ABORTED'
          break
        }
      }

            Unassigned Unassigned
            rupert Rupert Madden-Abbott
            Votes:
            7 Vote for this issue
            Watchers:
            11 Start watching this issue

              Created:
              Updated: