This is an automated email from the ASF dual-hosted git repository. zhongjiajie pushed a commit to branch 3.0.1-prepare in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
commit 1f88c5a637655fefca11cbc4053d1e59e8803c92 Author: JieguangZhou <[email protected]> AuthorDate: Sat Aug 27 18:48:09 2022 +0800 [bug][python] Fix task switch error when default branch not defined last (#11606) Co-authored-by: Jiajie Zhong <[email protected]> (cherry picked from commit 635fde19817800221903034c58c858df86e54714) --- .../src/pydolphinscheduler/tasks/switch.py | 25 +++++++++++----------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/dolphinscheduler-python/pydolphinscheduler/src/pydolphinscheduler/tasks/switch.py b/dolphinscheduler-python/pydolphinscheduler/src/pydolphinscheduler/tasks/switch.py index 0c9a2b82b3..05ac9c1329 100644 --- a/dolphinscheduler-python/pydolphinscheduler/src/pydolphinscheduler/tasks/switch.py +++ b/dolphinscheduler-python/pydolphinscheduler/src/pydolphinscheduler/tasks/switch.py @@ -99,23 +99,22 @@ class SwitchCondition(Base): result = [] num_branch_default = 0 for condition in self.args: - if isinstance(condition, SwitchBranch): - if num_branch_default < 1: - if isinstance(condition, Default): - self._DEFINE_ATTR.add("next_node") - setattr(self, "next_node", condition.next_node) - num_branch_default += 1 - elif isinstance(condition, Branch): - result.append(condition.get_define()) - else: - raise PyDSParamException( - "Task Switch's parameter only support exactly one default branch." - ) - else: + if not isinstance(condition, SwitchBranch): raise PyDSParamException( "Task Switch's parameter only support SwitchBranch but got %s.", type(condition), ) + # Default number branch checker + if num_branch_default >= 1 and isinstance(condition, Default): + raise PyDSParamException( + "Task Switch's parameter only support exactly one default branch." + ) + if isinstance(condition, Default): + self._DEFINE_ATTR.add("next_node") + setattr(self, "next_node", condition.next_node) + num_branch_default += 1 + elif isinstance(condition, Branch): + result.append(condition.get_define()) # Handle switch default branch, default value is `""` if not provide. if num_branch_default == 0: self._DEFINE_ATTR.add("next_node")
