• 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

          Taking a look into the code tells me, the first argument for Java's StringTokenizer is null. This is weird, because its value should be taken from Pipline script's file

          [...]
                upstreamProjects: "../Kevin"
          [...]
          

          Stefan Gasterstädt added a comment - Taking a look into the code tells me, the first argument for Java's StringTokenizer is null. This is weird, because its value should be taken from Pipline script's file [...] upstreamProjects: "../Kevin" [...]

          abayer is there any temporary workaround to this? It seems quite critical to me that the upstream trigger completely doesn't work with the latest revisions. Can you tell which plugins (or jenkins core?) I could downgrade to get around this issue and get my toolchain running again?

          Sir Tumbleweed added a comment - abayer is there any temporary workaround to this? It seems quite critical to me that the upstream trigger completely doesn't work with the latest revisions. Can you tell which plugins (or jenkins core?) I could downgrade to get around this issue and get my toolchain running again?

          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: