From 65322155a3b27d8f3def00e1d1ce7c11ad68c6c7 Mon Sep 17 00:00:00 2001 From: Jiajie Zhong Date: Fri, 7 Jan 2022 21:29:37 +0800 Subject: [PATCH] [python] Fix database error handler about no datasource name (#7631) * [python] Fix database error handler about no datasource name The original code show too many unrelated log when database name do not exists. BTW, it would continue the code when error miss. This patch is try to fix it. close: #7616 * Use java exception instead of self define * Enhance --- .../src/pydolphinscheduler/core/database.py | 9 ++++++++- .../dolphinscheduler/server/PythonGatewayServer.java | 8 ++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/dolphinscheduler-python/pydolphinscheduler/src/pydolphinscheduler/core/database.py b/dolphinscheduler-python/pydolphinscheduler/src/pydolphinscheduler/core/database.py index f87ffefe06..b6602a6483 100644 --- a/dolphinscheduler-python/pydolphinscheduler/src/pydolphinscheduler/core/database.py +++ b/dolphinscheduler-python/pydolphinscheduler/src/pydolphinscheduler/core/database.py @@ -19,6 +19,9 @@ from typing import Dict +from py4j.protocol import Py4JJavaError + +from pydolphinscheduler.exceptions import PyDSParamException from pydolphinscheduler.java_gateway import launch_gateway @@ -52,5 +55,9 @@ class Database(dict): return self._database else: gateway = launch_gateway() - self._database = gateway.entry_point.getDatasourceInfo(name) + try: + self._database = gateway.entry_point.getDatasourceInfo(name) + # Handler database source do not exists error, for now we just terminate the process. + except Py4JJavaError as ex: + raise PyDSParamException(str(ex.java_exception)) return self._database diff --git a/dolphinscheduler-python/src/main/java/org/apache/dolphinscheduler/server/PythonGatewayServer.java b/dolphinscheduler-python/src/main/java/org/apache/dolphinscheduler/server/PythonGatewayServer.java index 73d66b17de..9489894f0e 100644 --- a/dolphinscheduler-python/src/main/java/org/apache/dolphinscheduler/server/PythonGatewayServer.java +++ b/dolphinscheduler-python/src/main/java/org/apache/dolphinscheduler/server/PythonGatewayServer.java @@ -392,12 +392,12 @@ public class PythonGatewayServer extends SpringBootServletInitializer { public Map getDatasourceInfo(String datasourceName) { Map result = new HashMap<>(); List dataSourceList = dataSourceMapper.queryDataSourceByName(datasourceName); - if (dataSourceList.size() > 1) { - String msg = String.format("Get more than one datasource by name %s", datasourceName); + if (dataSourceList == null || dataSourceList.isEmpty()) { + String msg = String.format("Can not find any datasource by name %s", datasourceName); logger.error(msg); throw new IllegalArgumentException(msg); - } else if (dataSourceList.size() == 0) { - String msg = String.format("Can not find any datasource by name %s", datasourceName); + } else if (dataSourceList.size() > 1) { + String msg = String.format("Get more than one datasource by name %s", datasourceName); logger.error(msg); throw new IllegalArgumentException(msg); } else {