• Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Blocker Blocker
    • core
    • Jenkins 2.72

      Within the current Jenkins, the upstrem-trigger mechanism fails with a NPE.

      To see the error, just create two "Pipeline" projects via Jenkins Web-UI:

      First is named "Kevin", the script is:

      pipeline {
      
        agent any
      
        stages {
          stage("Hello") {
            steps {
                script {
                    sh "echo Kevin here"
                }
            }
          }
        }
      
      }
      

      Starting this project works fine.

      Now, second project is named "Chantalle", the script is:

      pipeline {
      
        agent any
      
        triggers {
          upstream(
            threshold: hudson.model.Result.SUCCESS,
            upstreamProjects: "../Kevin"
          )
        }
      
        stages {
          stage("Hello") {
            steps {
                script {
                    sh "echo Chantalle here"
                }
            }
          }
        }
      
      }
      

      Similar, starting this project at its own works fine.

      But when starting "Kevin" again, I expect "Chantalle" to be executed afterwards. Instead, a NPE is thrown, and "Chantalle" does not start:

      Aug 01, 2017 1:39:38 PM org.jenkinsci.plugins.workflow.job.WorkflowRun finish
      INFO: Kevin #6 completed: SUCCESS
      Aug 01, 2017 1:39:38 PM hudson.model.listeners.RunListener report
      WARNING: RunListener failed
      java.lang.NullPointerException
          at java.util.StringTokenizer.<init>(StringTokenizer.java:199)
          at java.util.StringTokenizer.<init>(StringTokenizer.java:221)
          at hudson.model.Items.fromNameList(Items.java:231)
          at jenkins.triggers.ReverseBuildTrigger$RunListenerImpl.calculateCache(ReverseBuildTrigger.java:256)
          at jenkins.triggers.ReverseBuildTrigger$RunListenerImpl.onCompleted(ReverseBuildTrigger.java:279)
          at hudson.model.listeners.RunListener.fireCompleted(RunListener.java:211)
          at org.jenkinsci.plugins.workflow.job.WorkflowRun.finish(WorkflowRun.java:663)
          at org.jenkinsci.plugins.workflow.job.WorkflowRun.access$1400(WorkflowRun.java:134)
          at org.jenkinsci.plugins.workflow.job.WorkflowRun$GraphL.onNewHead(WorkflowRun.java:966)
          at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.notifyListeners(CpsFlowExecution.java:1221)
          at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$3.run(CpsThreadGroup.java:407)
          at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$1.run(CpsVmExecutorService.java:35)
          at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112)
          at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
          at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
          at java.util.concurrent.FutureTask.run(FutureTask.java:266)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
          at java.lang.Thread.run(Thread.java:748)
      

          [JENKINS-45909] UpstreamTrigger fails with NPE

          Andrew Bayer added a comment -

          Will check on this today.

          Andrew Bayer added a comment - Will check on this today.

          Andrew Bayer added a comment -

          Ok, so far, this works with core 2.60 and workflow-job 2.11 - trying further combinations...

          Andrew Bayer added a comment - Ok, so far, this works with core 2.60 and workflow-job 2.11 - trying further combinations...

          Andrew Bayer added a comment -

          So with latest of everything on 2.72, with new jobs created after upgrading to 2.72, this works. tumbl3w33d is uploading the config.xmls for their failing job(s) so I can see why trigger.upstreamProjects is null...

          Andrew Bayer added a comment - So with latest of everything on 2.72, with new jobs created after upgrading to 2.72, this works. tumbl3w33d is uploading the config.xmls for their failing job(s) so I can see why trigger.upstreamProjects is null...

          In the attached version of the config.xml you see the upstream job "Kevin" instead of "../Kevin", but that's just from playing around with different notations. It's broken either way.

          Sir Tumbleweed added a comment - In the attached version of the config.xml you see the upstream job "Kevin" instead of "../Kevin", but that's just from playing around with different notations. It's broken either way.

          Andrew Bayer added a comment -

          We're nailing this down over IRC at the moment - the problem seems to be that at least one other job has a ReverseBuildTrigger with a null upstreamProjects. That'd cause the NPE in question, even when you're running an unrelated job. So as a workaround while I figure out a real fix for this, you can run https://gist.github.com/abayer/79700ea922e523d2e82a28675b1181e6 in Manage Jenkins -> Script Console to find job(s) with null upstreamProjects. You then need to fix those jobs to make sure they have non-null upstreamProjects and re-run them.

          Meanwhile, I'm trying to decide how we keep this from happening in the future.

          Andrew Bayer added a comment - We're nailing this down over IRC at the moment - the problem seems to be that at least one other job has a ReverseBuildTrigger with a null upstreamProjects . That'd cause the NPE in question, even when you're running an unrelated job. So as a workaround while I figure out a real fix for this, you can run https://gist.github.com/abayer/79700ea922e523d2e82a28675b1181e6 in Manage Jenkins -> Script Console to find job(s) with null upstreamProjects . You then need to fix those jobs to make sure they have non-null upstreamProjects and re-run them. Meanwhile, I'm trying to decide how we keep this from happening in the future.

          Tons of kudos to abayer for this intensive support. We found a nice way to DoS a jenkins' jobs that depend on upstream triggers.

          Sir Tumbleweed added a comment - Tons of kudos to abayer for this intensive support. We found a nice way to DoS a jenkins' jobs that depend on upstream triggers.

          Have been just informed about the problem. Big thank you for your support!

          Stefan Gasterstädt added a comment - Have been just informed about the problem. Big thank you for your support!

          Andrew Bayer added a comment -

          Andrew Bayer added a comment - PR up at https://github.com/jenkinsci/jenkins/pull/2966

          Code changed in jenkins
          User: Andrew Bayer
          Path:
          core/src/main/java/jenkins/triggers/ReverseBuildTrigger.java
          test/src/test/java/jenkins/triggers/ReverseBuildTriggerTest.java
          http://jenkins-ci.org/commit/jenkins/f8dd58425f54e27f5bf74a0bb769c50cbb96bc08
          Log:
          [FIXED JENKINS-45909] ReverseBuildTrigger.upstreamProjects should be null safe

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Andrew Bayer Path: core/src/main/java/jenkins/triggers/ReverseBuildTrigger.java test/src/test/java/jenkins/triggers/ReverseBuildTriggerTest.java http://jenkins-ci.org/commit/jenkins/f8dd58425f54e27f5bf74a0bb769c50cbb96bc08 Log: [FIXED JENKINS-45909] ReverseBuildTrigger.upstreamProjects should be null safe

          Oleg Nenashev added a comment -

          The fix has been integrated towards Jenkins 2.74. Marking it as LTS candidate.

          IMHO the fix is not ideal, JENKINS-46161 is a follow-up

          Oleg Nenashev added a comment - The fix has been integrated towards Jenkins 2.74. Marking it as LTS candidate. IMHO the fix is not ideal, JENKINS-46161 is a follow-up

            abayer Andrew Bayer
            ghostcity Stefan Gasterstädt
            Votes:
            1 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: