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 {