From d6d806c3cc0859f11d61701a17eda6c5705a141f Mon Sep 17 00:00:00 2001 From: wind Date: Thu, 13 Jan 2022 19:37:58 +0800 Subject: [PATCH] [fix-7671][plugin] Supports whether SQL is placed in the same session for configuration(fix-7671) (#7675) (#8002) -Supports whether SQL is placed in the same session for configuration Co-authored-by: mask <39329477+Narcasserun@users.noreply.github.com> --- dolphinscheduler-common/src/main/resources/common.properties | 3 +++ .../datasource/api/provider/JdbcDataSourceProvider.java | 5 +++-- .../org/apache/dolphinscheduler/spi/utils/Constants.java | 5 +++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/dolphinscheduler-common/src/main/resources/common.properties b/dolphinscheduler-common/src/main/resources/common.properties index 3cf79f3783..eb5de5d905 100644 --- a/dolphinscheduler-common/src/main/resources/common.properties +++ b/dolphinscheduler-common/src/main/resources/common.properties @@ -75,6 +75,9 @@ datasource.encryption.enable=false # datasource encryption salt datasource.encryption.salt=!@#$%^&* +# Whether hive SQL is executed in the same session +support.hive.oneSession=false + # use sudo or not, if set true, executing user is tenant user and deploy user needs sudo permissions; if set false, executing user is the deploy user and doesn't need sudo permissions sudo.enable=true diff --git a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/provider/JdbcDataSourceProvider.java b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/provider/JdbcDataSourceProvider.java index 24a6a29fe1..ac93ee1fad 100644 --- a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/provider/JdbcDataSourceProvider.java +++ b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/provider/JdbcDataSourceProvider.java @@ -77,8 +77,9 @@ public class JdbcDataSourceProvider { dataSource.setUsername(properties.getUser()); dataSource.setPassword(PasswordUtils.decodePassword(properties.getPassword())); - dataSource.setMinimumIdle(1); - dataSource.setMaximumPoolSize(1); + Boolean isOneSession = PropertyUtils.getBoolean(Constants.SUPPORT_HIVE_ONE_SESSION, false); + dataSource.setMinimumIdle(isOneSession ? 1 : PropertyUtils.getInt(Constants.SPRING_DATASOURCE_MIN_IDLE, 5)); + dataSource.setMaximumPoolSize(isOneSession ? 1 : PropertyUtils.getInt(Constants.SPRING_DATASOURCE_MAX_ACTIVE, 50)); dataSource.setConnectionTestQuery(properties.getValidationQuery()); if (properties.getProps() != null) { diff --git a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/utils/Constants.java b/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/utils/Constants.java index 4c37e90302..abe0672241 100644 --- a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/utils/Constants.java +++ b/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/utils/Constants.java @@ -118,6 +118,11 @@ public class Constants { */ public static final String KERBEROS = "kerberos"; + /** + * support hive datasource in one session + */ + public static final String SUPPORT_HIVE_ONE_SESSION = "support.hive.oneSession"; + /** * driver */