You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@linkis.apache.org by pe...@apache.org on 2023/03/06 12:34:48 UTC

[linkis] branch dev-1.3.2 updated: fix datasource bug with keyDefinition with defalut value null (#4311)

This is an automated email from the ASF dual-hosted git repository.

peacewong pushed a commit to branch dev-1.3.2
in repository https://gitbox.apache.org/repos/asf/linkis.git


The following commit(s) were added to refs/heads/dev-1.3.2 by this push:
     new 5cb31eaf5 fix datasource bug with keyDefinition with defalut value null (#4311)
5cb31eaf5 is described below

commit 5cb31eaf557caeac5b53b95a463a138759d1c1da
Author: Casion <ca...@gmail.com>
AuthorDate: Mon Mar 6 20:34:41 2023 +0800

    fix datasource bug with keyDefinition with defalut value null (#4311)
---
 .../core/restful/DataSourceCoreRestfulApi.java     | 63 ++++++++++++----------
 .../service/impl/MetadataQueryServiceImpl.java     |  3 +-
 2 files changed, 38 insertions(+), 28 deletions(-)

diff --git a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/main/java/org/apache/linkis/datasourcemanager/core/restful/DataSourceCoreRestfulApi.java b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/main/java/org/apache/linkis/datasourcemanager/core/restful/DataSourceCoreRestfulApi.java
index c5c15be50..927346bb7 100644
--- a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/main/java/org/apache/linkis/datasourcemanager/core/restful/DataSourceCoreRestfulApi.java
+++ b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/main/java/org/apache/linkis/datasourcemanager/core/restful/DataSourceCoreRestfulApi.java
@@ -37,6 +37,8 @@ import org.apache.linkis.metadata.query.common.MdmConfiguration;
 import org.apache.linkis.server.Message;
 import org.apache.linkis.server.utils.ModuleUserUtils;
 
+import org.apache.commons.lang3.StringUtils;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -259,7 +261,8 @@ public class DataSourceCoreRestfulApi {
           keyDefinitionList.forEach(
               keyDefinition -> {
                 String key = keyDefinition.getKey();
-                if (!connectParams.containsKey(key)) {
+                if (StringUtils.isNotBlank(keyDefinition.getDefaultValue())
+                    && !connectParams.containsKey(key)) {
                   connectParams.put(key, keyDefinition.getDefaultValue());
                 }
               });
@@ -315,7 +318,8 @@ public class DataSourceCoreRestfulApi {
           keyDefinitionList.forEach(
               keyDefinition -> {
                 String key = keyDefinition.getKey();
-                if (!connectParams.containsKey(key)) {
+                if (StringUtils.isNotBlank(keyDefinition.getDefaultValue())
+                    && !connectParams.containsKey(key)) {
                   connectParams.put(key, keyDefinition.getDefaultValue());
                 }
               });
@@ -361,10 +365,11 @@ public class DataSourceCoreRestfulApi {
           if (!AuthContext.hasPermission(dataSource, userName)) {
             return Message.error("Don't have query permission for data source [没有数据源的查询权限]");
           }
+
+          List<DataSourceParamKeyDefinition> keyDefinitionList =
+              dataSourceRelateService.getKeyDefinitionsByType(dataSource.getDataSourceTypeId());
           // Decrypt
-          RestfulApiHelper.decryptPasswordKey(
-              dataSourceRelateService.getKeyDefinitionsByType(dataSource.getDataSourceTypeId()),
-              dataSource.getConnectParams());
+          RestfulApiHelper.decryptPasswordKey(keyDefinitionList, dataSource.getConnectParams());
           return Message.ok().data("info", dataSource);
         },
         "Fail to access data source[获取数据源信息失败]");
@@ -396,10 +401,11 @@ public class DataSourceCoreRestfulApi {
           if (!AuthContext.hasPermission(dataSource, userName)) {
             return Message.error("Don't have query permission for data source [没有数据源的查询权限]");
           }
+
+          List<DataSourceParamKeyDefinition> keyDefinitionList =
+              dataSourceRelateService.getKeyDefinitionsByType(dataSource.getDataSourceTypeId());
           // Decrypt
-          RestfulApiHelper.decryptPasswordKey(
-              dataSourceRelateService.getKeyDefinitionsByType(dataSource.getDataSourceTypeId()),
-              dataSource.getConnectParams());
+          RestfulApiHelper.decryptPasswordKey(keyDefinitionList, dataSource.getConnectParams());
 
           return Message.ok().data("info", dataSource);
         },
@@ -432,10 +438,10 @@ public class DataSourceCoreRestfulApi {
           if (!AuthContext.hasPermission(dataSource, userName)) {
             return Message.error("Don't have query permission for data source [没有数据源的查询权限]");
           }
+          List<DataSourceParamKeyDefinition> keyDefinitionList =
+              dataSourceRelateService.getKeyDefinitionsByType(dataSource.getDataSourceTypeId());
           // Decrypt
-          RestfulApiHelper.decryptPasswordKey(
-              dataSourceRelateService.getKeyDefinitionsByType(dataSource.getDataSourceTypeId()),
-              dataSource.getConnectParams());
+          RestfulApiHelper.decryptPasswordKey(keyDefinitionList, dataSource.getConnectParams());
 
           return Message.ok().data("info", dataSource);
         },
@@ -477,10 +483,10 @@ public class DataSourceCoreRestfulApi {
           if (!AuthContext.hasPermission(dataSource, userName)) {
             return Message.error("Don't have query permission for data source [没有数据源的查询权限]");
           }
+          List<DataSourceParamKeyDefinition> keyDefinitionList =
+              dataSourceRelateService.getKeyDefinitionsByType(dataSource.getDataSourceTypeId());
           // Decrypt
-          RestfulApiHelper.decryptPasswordKey(
-              dataSourceRelateService.getKeyDefinitionsByType(dataSource.getDataSourceTypeId()),
-              dataSource.getConnectParams());
+          RestfulApiHelper.decryptPasswordKey(keyDefinitionList, dataSource.getConnectParams());
           return Message.ok().data("info", dataSource);
         },
         "Fail to access data source[获取数据源信息失败]");
@@ -514,14 +520,15 @@ public class DataSourceCoreRestfulApi {
             return Message.error("Don't have query permission for data source [没有数据源的查询权限]");
           }
           List<DatasourceVersion> versions = dataSourceInfoService.getVersionList(dataSourceId);
+
+          List<DataSourceParamKeyDefinition> keyDefinitionList =
+              dataSourceRelateService.getKeyDefinitionsByType(dataSource.getDataSourceTypeId());
           // Decrypt
           if (null != versions) {
             versions.forEach(
                 version -> {
                   RestfulApiHelper.decryptPasswordKey(
-                      dataSourceRelateService.getKeyDefinitionsByType(
-                          dataSource.getDataSourceTypeId()),
-                      version.getConnectParams());
+                      keyDefinitionList, version.getConnectParams());
                 });
           }
           return Message.ok().data("versions", versions);
@@ -665,9 +672,9 @@ public class DataSourceCoreRestfulApi {
             return Message.error("Don't have query permission for data source [没有数据源的查询权限]");
           }
           Map<String, Object> connectParams = dataSource.getConnectParams();
-          RestfulApiHelper.decryptPasswordKey(
-              dataSourceRelateService.getKeyDefinitionsByType(dataSource.getDataSourceTypeId()),
-              connectParams);
+          List<DataSourceParamKeyDefinition> keyDefinitionList =
+              dataSourceRelateService.getKeyDefinitionsByType(dataSource.getDataSourceTypeId());
+          RestfulApiHelper.decryptPasswordKey(keyDefinitionList, connectParams);
           return Message.ok().data("connectParams", connectParams);
         },
         "Fail to connect data source[连接数据源失败]");
@@ -700,9 +707,10 @@ public class DataSourceCoreRestfulApi {
             return Message.error("Don't have query permission for data source [没有数据源的查询权限]");
           }
           Map<String, Object> connectParams = dataSource.getConnectParams();
-          RestfulApiHelper.decryptPasswordKey(
-              dataSourceRelateService.getKeyDefinitionsByType(dataSource.getDataSourceTypeId()),
-              connectParams);
+
+          List<DataSourceParamKeyDefinition> keyDefinitionList =
+              dataSourceRelateService.getKeyDefinitionsByType(dataSource.getDataSourceTypeId());
+          RestfulApiHelper.decryptPasswordKey(keyDefinitionList, connectParams);
           return Message.ok().data("connectParams", connectParams);
         },
         "Fail to connect data source[连接数据源失败]");
@@ -736,12 +744,12 @@ public class DataSourceCoreRestfulApi {
           String dataSourceTypeName = dataSource.getDataSourceType().getName();
           String mdRemoteServiceName = MdmConfiguration.METADATA_SERVICE_APPLICATION.getValue();
           Map<String, Object> connectParams = dataSource.getConnectParams();
-          RestfulApiHelper.decryptPasswordKey(
-              dataSourceRelateService.getKeyDefinitionsByType(dataSource.getDataSourceTypeId()),
-              connectParams);
+
           // Get definitions
           List<DataSourceParamKeyDefinition> keyDefinitionList =
               dataSourceRelateService.getKeyDefinitionsByType(dataSource.getDataSourceTypeId());
+          RestfulApiHelper.decryptPasswordKey(keyDefinitionList, connectParams);
+
           // For connecting, also need to handle the parameters
           for (DataSourceParamsHook hook : dataSourceParamsHooks) {
             hook.beforePersist(connectParams, keyDefinitionList);
@@ -835,7 +843,8 @@ public class DataSourceCoreRestfulApi {
     keyDefinitionList.forEach(
         keyDefinition -> {
           String key = keyDefinition.getKey();
-          if (!connectParams.containsKey(key)) {
+          if (StringUtils.isNotBlank(keyDefinition.getDefaultValue())
+              && !connectParams.containsKey(key)) {
             connectParams.put(key, keyDefinition.getDefaultValue());
           }
         });
diff --git a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/service/impl/MetadataQueryServiceImpl.java b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/service/impl/MetadataQueryServiceImpl.java
index caf5c02bc..c7eb2602c 100644
--- a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/service/impl/MetadataQueryServiceImpl.java
+++ b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/service/impl/MetadataQueryServiceImpl.java
@@ -378,7 +378,8 @@ public class MetadataQueryServiceImpl implements MetadataQueryService {
     if (rpcResult instanceof DsInfoResponse) {
       DsInfoResponse response = (DsInfoResponse) rpcResult;
       if (!response.status()) {
-        throw new ErrorException(-1, "Error in Data Source Manager Server[数据源服务出错]");
+        throw new ErrorException(
+            -1, "Error in Data Source Manager Server[数据源服务出错] " + response.errorMsg());
       }
       boolean hasPermission =
           (AuthContext.isAdministrator(userName)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org