From 3896ef2e1a79f01c9e11235c870b353dfce0694c Mon Sep 17 00:00:00 2001 From: saksham2105 Date: Wed, 20 Dec 2023 19:47:42 +0530 Subject: [PATCH] conductor-oss-fixDynamicForkIssue: Fix groovy testcase failure --- .../mapper/ForkJoinDynamicTaskMapper.java | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/com/netflix/conductor/core/execution/mapper/ForkJoinDynamicTaskMapper.java b/core/src/main/java/com/netflix/conductor/core/execution/mapper/ForkJoinDynamicTaskMapper.java index 21b10795a..8eed7a00d 100644 --- a/core/src/main/java/com/netflix/conductor/core/execution/mapper/ForkJoinDynamicTaskMapper.java +++ b/core/src/main/java/com/netflix/conductor/core/execution/mapper/ForkJoinDynamicTaskMapper.java @@ -227,15 +227,23 @@ public List getMappedTasks(TaskMapperContext taskMapperContext) } for (TaskModel forkedTask : forkedTasks) { - Map forkedTaskInput = - tasksInput.get(forkedTask.getReferenceTaskName()); - if (forkedTask.getInputData() == null) { - forkedTask.setInputData(new HashMap<>()); + try { + Map forkedTaskInput = + tasksInput.get(forkedTask.getReferenceTaskName()); + if (forkedTask.getInputData() == null) { + forkedTask.setInputData(new HashMap<>()); + } + if (forkedTaskInput == null) { + forkedTaskInput = new HashMap<>(); + } + forkedTask.getInputData().putAll(forkedTaskInput); + } catch (Exception e) { + String reason = + String.format( + "Tasks could not be dynamically forked due to invalid input: %s", + e.getMessage()); + throw new TerminateWorkflowException(reason); } - if (forkedTaskInput == null) { - forkedTaskInput = new HashMap<>(); - } - forkedTask.getInputData().putAll(forkedTaskInput); } mappedTasks.addAll(forkedTasks); // Get the last of the dynamic tasks so that the join can be performed once this