From 425be8515cfaabd19de5db6a10c3f82875fd72f9 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Thu, 13 Apr 2017 16:50:28 -0400 Subject: [PATCH] [JENKINS-43361] Unreproducible NPE. --- .../jenkinsci/plugins/workflow/cps/CpsFlowExecution.java | 2 +- .../org/jenkinsci/plugins/workflow/cps/CpsStepContext.java | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsFlowExecution.java b/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsFlowExecution.java index abd324469..05573f90c 100644 --- a/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsFlowExecution.java +++ b/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsFlowExecution.java @@ -694,7 +694,7 @@ public void waitForSuspension() throws InterruptedException, ExecutionException g.scheduleRun().get(); } - public synchronized FlowHead getFlowHead(int id) { + public synchronized @CheckForNull FlowHead getFlowHead(int id) { return heads.get(id); } diff --git a/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsStepContext.java b/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsStepContext.java index f2b39c281..e87f8b98c 100644 --- a/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsStepContext.java +++ b/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsStepContext.java @@ -383,7 +383,12 @@ private void scheduleNextRun() { final List parents = new ArrayList(); for (int head : bodyHeads) { - parents.add(flow.getFlowHead(head).get()); + FlowHead flowHead = flow.getFlowHead(head); + if (flowHead != null) { + parents.add(flowHead.get()); + } else { + LOGGER.log(Level.WARNING, "Could not find flow head #{0}", head); + } } flow.runInCpsVmThread(new FutureCallback() {