• Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Minor Minor
    • core, pipeline
    • Jenkins 2.100. All other information in the support.zip

      Since upgrading to Jenkins 2.100, all Jenkins Pipeline Jobs have started showing barber poles, and reporting the time left as N/A, despite some of them having run thousands of times, and should have plenty of run information to at least give some perspective on the time remaining.

       

      As over 90% of our jobs now use pipeline or declarative pipeline, I thought that all jobs were experiencing the issue, however Freestyle projects seem to report their time remaining just fine

          [JENKINS-48821] Time remaining for all pipeline jobs is N/A

          Andrew Bayer added a comment -

          So nothing changed but upgrading to core 2.100? What had you been on previously?

          Andrew Bayer added a comment - So nothing changed but upgrading to core 2.100? What had you been on previously?

          Tom Larrow added a comment -

          We were on 2.98 previously, and in the recent week have upgraded from 2.97 to 2.98.  When we did the 2.97 to 2.98 conversion we faced an the issue where the nodes were not connecting.  In addition to updating the Swarm plugin from 3.6 to 3.7 we rebuilt the docker images containing our nodes to update Jenkins remoting client from 3.12 to 3.15

          I noticed the N/A a few times with jobs, after that, but it was when we went to 2.100 that they seemed to happen all the time.

          I did just watch a job which does most of the work on the slave, and was N/A for the entire time on the slave, jump to perform a task on the master.  While it was on the master, it did have an estimate.  So it seems to be something in the remoting which may not be reporting the time.

          Tom Larrow added a comment - We were on 2.98 previously, and in the recent week have upgraded from 2.97 to 2.98.  When we did the 2.97 to 2.98 conversion we faced an the issue where the nodes were not connecting.  In addition to updating the Swarm plugin from 3.6 to 3.7 we rebuilt the docker images containing our nodes to update Jenkins remoting client from 3.12 to 3.15 I noticed the N/A a few times with jobs, after that, but it was when we went to 2.100 that they seemed to happen all the time. I did just watch a job which does most of the work on the slave, and was N/A for the entire time on the slave, jump to perform a task on the master.  While it was on the master, it did have an estimate.  So it seems to be something in the remoting which may not be reporting the time.

          Andrew Bayer added a comment -

          Ok, oleg_nenashev, any ideas on what might have changed recently in remoting that could be causing this?

          Andrew Bayer added a comment - Ok, oleg_nenashev , any ideas on what might have changed recently in remoting that could be causing this?

          Andrew Bayer added a comment -

          Actually, looking a little more closely - ExecutorStepExecution.PlaceholderTask#getEstimatedDuration() is probably what's relevant here. And if you're seeing the estimate show up right on cases where it's not on an agent (i.e., not in a node block in the Pipeline), then there's definitely something awry there, probably with ExecutorStepExecution.PlaceholderTask#run(). I'll investigate.

          Andrew Bayer added a comment - Actually, looking a little more closely - ExecutorStepExecution.PlaceholderTask#getEstimatedDuration() is probably what's relevant here. And if you're seeing the estimate show up right on cases where it's not on an agent (i.e., not in a node block in the Pipeline), then there's definitely something awry there, probably with ExecutorStepExecution.PlaceholderTask#run() . I'll investigate.

          Andrew Bayer added a comment -

          Well, joy, can't reproduce with core 2.100/remoting 3.15/latest of all Pipeline plugins, at least not via unit tests.

          Andrew Bayer added a comment - Well, joy, can't reproduce with core 2.100/remoting 3.15/latest of all Pipeline plugins, at least not via unit tests.

          Tom Larrow added a comment -

          From the outside, it appears that https://build.kde.org/ may be experiencing the same issue.  From my unauthenticated view, all jobs are reporting N/A , and they are also on Jenkins 2.101 and using many pipeline jobs building on external nodes.  I just don't know if it is because I am unauthenticated which is the reason for me seeing N/A on all the jobs.

          Tom Larrow added a comment - From the outside, it appears that https://build.kde.org/  may be experiencing the same issue.  From my unauthenticated view, all jobs are reporting N/A , and they are also on Jenkins 2.101 and using many pipeline jobs building on external nodes.  I just don't know if it is because I am unauthenticated which is the reason for me seeing N/A on all the jobs.

          Andrew Bayer added a comment -

          oleg_nenashev - any ideas here? Feels like a core thing rather than a Pipeline thing, but it only pops up for Pipeline jobs...

          Andrew Bayer added a comment - oleg_nenashev - any ideas here? Feels like a core thing rather than a Pipeline thing, but it only pops up for Pipeline jobs...

          Oleg Nenashev added a comment -

          abayer I'd bet it is an issue after JENKINS-48350 in 2.92

          Oleg Nenashev added a comment - abayer I'd bet it is an issue after JENKINS-48350 in 2.92

          Oleg Nenashev added a comment -

          CC jimilian. I was proposing an extra API in that PR, maybe we need to reconsider that

          Oleg Nenashev added a comment - CC jimilian . I was proposing an extra API in that PR, maybe we need to reconsider that

          Berno Langer added a comment -

          In hudson.model.Executor the executableEstimatedDuration is resetted always in the finally block at line 462. Moving this one line up, so it is only executed when there is no asynchronous execution, solved the problem for me.

          [...]
          458       } finally {
          459            if (asynchronousExecution == null) {
          460                finish2();
          461                executableEstimatedDuration = DEFAULT_ESTIMATED_DURATION;
          462            }
          463        }
          [...]
          

          Berno Langer added a comment - In hudson.model.Executor the executableEstimatedDuration is resetted always in the finally block at line 462 . Moving this one line up, so it is only executed when there is no asynchronous execution, solved the problem for me. [...] 458 } finally { 459 if (asynchronousExecution == null) { 460 finish2(); 461 executableEstimatedDuration = DEFAULT_ESTIMATED_DURATION; 462 } 463 } [...]

          This error also appears in 2.89.4

          Andreas Tscharner added a comment - This error also appears in 2.89.4

          Oleg Nenashev added a comment -

          Oleg Nenashev added a comment - https://github.com/jenkinsci/jenkins/pull/3329

          Code changed in jenkins
          User: Berno Langer
          Path:
          core/src/main/java/hudson/model/Executor.java
          http://jenkins-ci.org/commit/jenkins/3fc392108ae382a4616964aa8bbb6b8cb9dff0dc
          Log:
          JENKINS-48821 - Don't forget estimated duration of asynchronous jobs (#3329)

          • Don't forget estimated duration of asynchronous jobs.

          When jobs are executed, the estimated duration is calculated, memorized
          and reseted when the job is finished.

          But when the job is executed asynchronously (e.g. as for pipeline
          scripts), the execution is just triggered. Therefore the estimated
          duration should remain - and not be reseted after triggering.

          JENKINS-48821: Time remaining for all pipeline jobs is N/A
          JENKINS-49616: Estimated time remaining NA

          • Reset cached estimated duration also when asynchronous job ends.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Berno Langer Path: core/src/main/java/hudson/model/Executor.java http://jenkins-ci.org/commit/jenkins/3fc392108ae382a4616964aa8bbb6b8cb9dff0dc Log: JENKINS-48821 - Don't forget estimated duration of asynchronous jobs (#3329) Don't forget estimated duration of asynchronous jobs. When jobs are executed, the estimated duration is calculated, memorized and reseted when the job is finished. But when the job is executed asynchronously (e.g. as for pipeline scripts), the execution is just triggered. Therefore the estimated duration should remain - and not be reseted after triggering. JENKINS-48821 : Time remaining for all pipeline jobs is N/A JENKINS-49616 : Estimated time remaining NA Reset cached estimated duration also when asynchronous job ends.

          Oleg Nenashev added a comment -

          The patch has been integrated towards 2.111

          Oleg Nenashev added a comment - The patch has been integrated towards 2.111

          Code changed in jenkins
          User: Berno Langer
          Path:
          core/src/main/java/hudson/model/Executor.java
          http://jenkins-ci.org/commit/jenkins/1400918ddaef45470720e60d4d1dbfd2f6ac78d4
          Log:
          JENKINS-48821 - Don't forget estimated duration of asynchronous jobs (#3329)

          • Don't forget estimated duration of asynchronous jobs.

          When jobs are executed, the estimated duration is calculated, memorized
          and reseted when the job is finished.

          But when the job is executed asynchronously (e.g. as for pipeline
          scripts), the execution is just triggered. Therefore the estimated
          duration should remain - and not be reseted after triggering.

          JENKINS-48821: Time remaining for all pipeline jobs is N/A
          JENKINS-49616: Estimated time remaining NA

          • Reset cached estimated duration also when asynchronous job ends.

          (cherry picked from commit 3fc392108ae382a4616964aa8bbb6b8cb9dff0dc)

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Berno Langer Path: core/src/main/java/hudson/model/Executor.java http://jenkins-ci.org/commit/jenkins/1400918ddaef45470720e60d4d1dbfd2f6ac78d4 Log: JENKINS-48821 - Don't forget estimated duration of asynchronous jobs (#3329) Don't forget estimated duration of asynchronous jobs. When jobs are executed, the estimated duration is calculated, memorized and reseted when the job is finished. But when the job is executed asynchronously (e.g. as for pipeline scripts), the execution is just triggered. Therefore the estimated duration should remain - and not be reseted after triggering. JENKINS-48821 : Time remaining for all pipeline jobs is N/A JENKINS-49616 : Estimated time remaining NA Reset cached estimated duration also when asynchronous job ends. (cherry picked from commit 3fc392108ae382a4616964aa8bbb6b8cb9dff0dc)

            blanger Berno Langer
            tomlarrow Tom Larrow
            Votes:
            3 Vote for this issue
            Watchers:
            13 Start watching this issue

              Created:
              Updated:
              Resolved: