This is an automated email from the ASF dual-hosted git repository. jianglongtao pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push: new 1926b4d38ea Remove the exclamation mark in the proxy's global rule configuration #22329 (#22457) 1926b4d38ea is described below commit 1926b4d38ea96da38620c3329db9d575b69a447a Author: jiangML <1060319...@qq.com> AuthorDate: Tue Nov 29 11:36:25 2022 +0800 Remove the exclamation mark in the proxy's global rule configuration #22329 (#22457) * Refactor: remove the exclamation mark in the proxy's global rule configuration * update doc * optimize code * add final for class * update yaml of test * optimize code * restore yaml about jdbc test * remove todo --- .../shardingsphere-proxy/yaml-config/rules.cn.md | 20 ++++++++++++++++ .../shardingsphere-proxy/yaml-config/rules.en.md | 20 ++++++++++++++++ .../src/main/resources/server/server.yaml | 12 +++++----- .../pojo/rule/YamlGlobalRuleConfiguration.java | 22 +++-------------- .../yaml/config/YamlAuthorityConfiguration.java | 4 ++-- .../config/YamlAuthorityRuleConfiguration.java | 4 ++-- .../config/YamlSQLParserRuleConfiguration.java | 4 ++-- .../config/YamlSQLTranslatorRuleConfiguration.java | 4 ++-- .../yaml/config/YamlTrafficRuleConfiguration.java | 4 ++-- .../config/YamlTransactionRuleConfiguration.java | 4 ++-- .../backend/config/ProxyConfigurationLoader.java | 28 +++++++++++++++------- .../config/yaml/YamlProxyServerConfiguration.java | 14 ++++++++++- .../bootstrap/src/main/resources/conf/server.yaml | 8 +++---- 13 files changed, 98 insertions(+), 50 deletions(-) diff --git a/docs/document/content/user-manual/shardingsphere-proxy/yaml-config/rules.cn.md b/docs/document/content/user-manual/shardingsphere-proxy/yaml-config/rules.cn.md index cacf3d7446b..2649bce2d01 100644 --- a/docs/document/content/user-manual/shardingsphere-proxy/yaml-config/rules.cn.md +++ b/docs/document/content/user-manual/shardingsphere-proxy/yaml-config/rules.cn.md @@ -16,5 +16,25 @@ ShardingSphere-Proxy 的规则配置与 ShardingSphere-JDBC 一致,具体规 与 ShardingSphere-JDBC 不同的是,以下规则需要配置在 ShardingSphere-Proxy 的 `server.yaml` 中: * [SQL 解析](/cn/user-manual/shardingsphere-jdbc/yaml-config/rules/sql-parser/) +```yaml +sqlParser: + sqlCommentParseEnabled: true + sqlStatementCache: + initialCapacity: 2000 + maximumSize: 65535 + parseTreeCache: + initialCapacity: 128 + maximumSize: 1024 +``` * [分布式事务](/cn/user-manual/shardingsphere-jdbc/yaml-config/rules/transaction/) +```yaml +transaction: + defaultType: XA + providerType: Atomikos +``` * [SQL 翻译](/cn/user-manual/shardingsphere-jdbc/yaml-config/rules/sql-translator/) +```yaml +sqlTranslator: + type: + useOriginalSQLWhenTranslatingFailed: +``` diff --git a/docs/document/content/user-manual/shardingsphere-proxy/yaml-config/rules.en.md b/docs/document/content/user-manual/shardingsphere-proxy/yaml-config/rules.en.md index 4caf75453ec..a1926262a52 100644 --- a/docs/document/content/user-manual/shardingsphere-proxy/yaml-config/rules.en.md +++ b/docs/document/content/user-manual/shardingsphere-proxy/yaml-config/rules.en.md @@ -17,5 +17,25 @@ For details, please refer to [ShardingSphere-JDBC Rules Configuration](/en/user- Unlike ShardingSphere-JDBC, the following rules need to be configured in `server.yaml` of ShardingSphere-Proxy: * [SQL Parsing](/en/user-manual/shardingsphere-jdbc/yaml-config/rules/sql-parser/) +```yaml +sqlParser: + sqlCommentParseEnabled: true + sqlStatementCache: + initialCapacity: 2000 + maximumSize: 65535 + parseTreeCache: + initialCapacity: 128 + maximumSize: 1024 +``` * [Distributed Operations](/en/user-manual/shardingsphere-jdbc/yaml-config/rules/transaction/) +```yaml +transaction: + defaultType: XA + providerType: Atomikos +``` * [SQL Translator](/cn/user-manual/shardingsphere-jdbc/yaml-config/rules/sql-translator/) +```yaml +sqlTranslator: + type: + useOriginalSQLWhenTranslatingFailed: +``` diff --git a/examples/shardingsphere-proxy-example/shardingsphere-proxy-distsql-example/src/main/resources/server/server.yaml b/examples/shardingsphere-proxy-example/shardingsphere-proxy-distsql-example/src/main/resources/server/server.yaml index f216f9a729e..addc5cbda5e 100644 --- a/examples/shardingsphere-proxy-example/shardingsphere-proxy-distsql-example/src/main/resources/server/server.yaml +++ b/examples/shardingsphere-proxy-example/shardingsphere-proxy-distsql-example/src/main/resources/server/server.yaml @@ -43,12 +43,12 @@ authority: privilege: type: ALL_PERMITTED -rules: - - !TRANSACTION - defaultType: XA - providerType: Atomikos - - !SQL_PARSER - sqlCommentParseEnabled: true +transaction: + defaultType: XA + providerType: Atomikos + +sqlParser: + sqlCommentParseEnabled: true props: max-connections-size-per-query: 1 diff --git a/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/yaml/config/YamlSQLTranslatorRuleConfiguration.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/rule/YamlGlobalRuleConfiguration.java similarity index 54% copy from kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/yaml/config/YamlSQLTranslatorRuleConfiguration.java copy to infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/rule/YamlGlobalRuleConfiguration.java index 878c6892647..8a4c91fa07f 100644 --- a/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/yaml/config/YamlSQLTranslatorRuleConfiguration.java +++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/config/pojo/rule/YamlGlobalRuleConfiguration.java @@ -15,26 +15,10 @@ * limitations under the License. */ -package org.apache.shardingsphere.sqltranslator.yaml.config; - -import lombok.Getter; -import lombok.Setter; -import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration; -import org.apache.shardingsphere.sqltranslator.api.config.SQLTranslatorRuleConfiguration; +package org.apache.shardingsphere.infra.yaml.config.pojo.rule; /** - * SQL translator configuration for YAML. + * YAML global rule configuration. */ -@Getter -@Setter -public final class YamlSQLTranslatorRuleConfiguration implements YamlRuleConfiguration { - - private String type; - - private boolean useOriginalSQLWhenTranslatingFailed = true; - - @Override - public Class<SQLTranslatorRuleConfiguration> getRuleConfigurationType() { - return SQLTranslatorRuleConfiguration.class; - } +public interface YamlGlobalRuleConfiguration extends YamlRuleConfiguration { } diff --git a/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityConfiguration.java b/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityConfiguration.java index 52c6e8377e7..cdd5005953b 100644 --- a/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityConfiguration.java +++ b/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityConfiguration.java @@ -51,9 +51,9 @@ public final class YamlAuthorityConfiguration implements YamlRuleConfiguration { } /** - * Convert to yaml authority rule configuration. + * Convert to YAML authority rule configuration. * - * @return yaml authority rule configuration + * @return YAML authority rule configuration */ public YamlAuthorityRuleConfiguration convertToYamlAuthorityRuleConfiguration() { YamlAuthorityRuleConfiguration result = new YamlAuthorityRuleConfiguration(); diff --git a/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityRuleConfiguration.java b/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityRuleConfiguration.java index b7384cd8ef6..4bea53292c0 100644 --- a/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityRuleConfiguration.java +++ b/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/config/YamlAuthorityRuleConfiguration.java @@ -20,8 +20,8 @@ package org.apache.shardingsphere.authority.yaml.config; import lombok.Getter; import lombok.Setter; import org.apache.shardingsphere.authority.config.AuthorityRuleConfiguration; -import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration; import org.apache.shardingsphere.infra.yaml.config.pojo.algorithm.YamlAlgorithmConfiguration; +import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration; import java.util.Collection; import java.util.LinkedList; @@ -31,7 +31,7 @@ import java.util.LinkedList; */ @Getter @Setter -public final class YamlAuthorityRuleConfiguration implements YamlRuleConfiguration { +public final class YamlAuthorityRuleConfiguration implements YamlGlobalRuleConfiguration { private Collection<String> users = new LinkedList<>(); diff --git a/kernel/parser/core/src/main/java/org/apache/shardingsphere/parser/yaml/config/YamlSQLParserRuleConfiguration.java b/kernel/parser/core/src/main/java/org/apache/shardingsphere/parser/yaml/config/YamlSQLParserRuleConfiguration.java index c336d347b90..fef2680f186 100644 --- a/kernel/parser/core/src/main/java/org/apache/shardingsphere/parser/yaml/config/YamlSQLParserRuleConfiguration.java +++ b/kernel/parser/core/src/main/java/org/apache/shardingsphere/parser/yaml/config/YamlSQLParserRuleConfiguration.java @@ -19,7 +19,7 @@ package org.apache.shardingsphere.parser.yaml.config; import lombok.Getter; import lombok.Setter; -import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration; +import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration; import org.apache.shardingsphere.parser.config.SQLParserRuleConfiguration; /** @@ -27,7 +27,7 @@ import org.apache.shardingsphere.parser.config.SQLParserRuleConfiguration; */ @Getter @Setter -public final class YamlSQLParserRuleConfiguration implements YamlRuleConfiguration { +public final class YamlSQLParserRuleConfiguration implements YamlGlobalRuleConfiguration { private boolean sqlCommentParseEnabled; diff --git a/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/yaml/config/YamlSQLTranslatorRuleConfiguration.java b/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/yaml/config/YamlSQLTranslatorRuleConfiguration.java index 878c6892647..f9c4388e50a 100644 --- a/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/yaml/config/YamlSQLTranslatorRuleConfiguration.java +++ b/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/yaml/config/YamlSQLTranslatorRuleConfiguration.java @@ -19,7 +19,7 @@ package org.apache.shardingsphere.sqltranslator.yaml.config; import lombok.Getter; import lombok.Setter; -import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration; +import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration; import org.apache.shardingsphere.sqltranslator.api.config.SQLTranslatorRuleConfiguration; /** @@ -27,7 +27,7 @@ import org.apache.shardingsphere.sqltranslator.api.config.SQLTranslatorRuleConfi */ @Getter @Setter -public final class YamlSQLTranslatorRuleConfiguration implements YamlRuleConfiguration { +public final class YamlSQLTranslatorRuleConfiguration implements YamlGlobalRuleConfiguration { private String type; diff --git a/kernel/traffic/core/src/main/java/org/apache/shardingsphere/traffic/yaml/config/YamlTrafficRuleConfiguration.java b/kernel/traffic/core/src/main/java/org/apache/shardingsphere/traffic/yaml/config/YamlTrafficRuleConfiguration.java index 702de3e0604..8a717c98151 100644 --- a/kernel/traffic/core/src/main/java/org/apache/shardingsphere/traffic/yaml/config/YamlTrafficRuleConfiguration.java +++ b/kernel/traffic/core/src/main/java/org/apache/shardingsphere/traffic/yaml/config/YamlTrafficRuleConfiguration.java @@ -19,8 +19,8 @@ package org.apache.shardingsphere.traffic.yaml.config; import lombok.Getter; import lombok.Setter; -import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration; import org.apache.shardingsphere.infra.yaml.config.pojo.algorithm.YamlAlgorithmConfiguration; +import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration; import org.apache.shardingsphere.traffic.api.config.TrafficRuleConfiguration; import java.util.LinkedHashMap; @@ -31,7 +31,7 @@ import java.util.Map; */ @Getter @Setter -public final class YamlTrafficRuleConfiguration implements YamlRuleConfiguration { +public final class YamlTrafficRuleConfiguration implements YamlGlobalRuleConfiguration { private Map<String, YamlTrafficStrategyConfiguration> trafficStrategies = new LinkedHashMap<>(); diff --git a/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/yaml/config/YamlTransactionRuleConfiguration.java b/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/yaml/config/YamlTransactionRuleConfiguration.java index f468cd4058c..5c665ef1d52 100644 --- a/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/yaml/config/YamlTransactionRuleConfiguration.java +++ b/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/yaml/config/YamlTransactionRuleConfiguration.java @@ -19,7 +19,7 @@ package org.apache.shardingsphere.transaction.yaml.config; import lombok.Getter; import lombok.Setter; -import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration; +import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration; import org.apache.shardingsphere.transaction.config.TransactionRuleConfiguration; import java.util.Properties; @@ -29,7 +29,7 @@ import java.util.Properties; */ @Getter @Setter -public final class YamlTransactionRuleConfiguration implements YamlRuleConfiguration { +public final class YamlTransactionRuleConfiguration implements YamlGlobalRuleConfiguration { private String defaultType; diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/config/ProxyConfigurationLoader.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/config/ProxyConfigurationLoader.java index 579d912eb4e..0ea805d8b9e 100644 --- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/config/ProxyConfigurationLoader.java +++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/config/ProxyConfigurationLoader.java @@ -21,9 +21,9 @@ import com.google.common.base.Preconditions; import lombok.AccessLevel; import lombok.NoArgsConstructor; import lombok.SneakyThrows; -import org.apache.shardingsphere.authority.yaml.config.YamlAuthorityRuleConfiguration; import org.apache.shardingsphere.infra.config.rule.RuleConfiguration; import org.apache.shardingsphere.infra.util.yaml.YamlEngine; +import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlGlobalRuleConfiguration; import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration; import org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapper; import org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperFactory; @@ -77,15 +77,27 @@ public final class ProxyConfigurationLoader { private static YamlProxyServerConfiguration loadServerConfiguration(final File yamlFile) throws IOException { YamlProxyServerConfiguration result = YamlEngine.unmarshal(yamlFile, YamlProxyServerConfiguration.class); - if (null == result) { - return new YamlProxyServerConfiguration(); + return null == result ? new YamlProxyServerConfiguration() : rebuildGlobalRuleConfiguration(result); + } + + private static YamlProxyServerConfiguration rebuildGlobalRuleConfiguration(final YamlProxyServerConfiguration serverConfiguration) { + serverConfiguration.getRules().removeIf(each -> each instanceof YamlGlobalRuleConfiguration); + if (null != serverConfiguration.getAuthority()) { + serverConfiguration.getRules().add(serverConfiguration.getAuthority().convertToYamlAuthorityRuleConfiguration()); } - // TODO authority will no longer be a global rule - result.getRules().removeIf(each -> each instanceof YamlAuthorityRuleConfiguration); - if (null != result.getAuthority()) { - result.getRules().add(result.getAuthority().convertToYamlAuthorityRuleConfiguration()); + if (null != serverConfiguration.getTransaction()) { + serverConfiguration.getRules().add(serverConfiguration.getTransaction()); } - return result; + if (null != serverConfiguration.getSqlParser()) { + serverConfiguration.getRules().add(serverConfiguration.getSqlParser()); + } + if (null != serverConfiguration.getSqlTranslator()) { + serverConfiguration.getRules().add(serverConfiguration.getSqlTranslator()); + } + if (null != serverConfiguration.getTraffic()) { + serverConfiguration.getRules().add(serverConfiguration.getTraffic()); + } + return serverConfiguration; } private static Collection<YamlProxyDatabaseConfiguration> loadDatabaseConfigurations(final File configPath) throws IOException { diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/config/yaml/YamlProxyServerConfiguration.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/config/yaml/YamlProxyServerConfiguration.java index cf96865eb33..b3131836d43 100644 --- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/config/yaml/YamlProxyServerConfiguration.java +++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/config/yaml/YamlProxyServerConfiguration.java @@ -21,8 +21,12 @@ import lombok.Getter; import lombok.Setter; import org.apache.shardingsphere.authority.yaml.config.YamlAuthorityConfiguration; import org.apache.shardingsphere.infra.util.yaml.YamlConfiguration; -import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration; import org.apache.shardingsphere.infra.yaml.config.pojo.mode.YamlModeConfiguration; +import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration; +import org.apache.shardingsphere.parser.yaml.config.YamlSQLParserRuleConfiguration; +import org.apache.shardingsphere.sqltranslator.yaml.config.YamlSQLTranslatorRuleConfiguration; +import org.apache.shardingsphere.traffic.yaml.config.YamlTrafficRuleConfiguration; +import org.apache.shardingsphere.transaction.yaml.config.YamlTransactionRuleConfiguration; import java.util.Collection; import java.util.LinkedList; @@ -39,6 +43,14 @@ public final class YamlProxyServerConfiguration implements YamlConfiguration { private YamlAuthorityConfiguration authority; + private YamlTransactionRuleConfiguration transaction; + + private YamlSQLParserRuleConfiguration sqlParser; + + private YamlSQLTranslatorRuleConfiguration sqlTranslator; + + private YamlTrafficRuleConfiguration traffic; + private Collection<YamlRuleConfiguration> rules = new LinkedList<>(); private Properties props = new Properties(); diff --git a/proxy/bootstrap/src/main/resources/conf/server.yaml b/proxy/bootstrap/src/main/resources/conf/server.yaml index 89994c80ceb..cbae3f3e249 100644 --- a/proxy/bootstrap/src/main/resources/conf/server.yaml +++ b/proxy/bootstrap/src/main/resources/conf/server.yaml @@ -42,11 +42,11 @@ # privilege: # type: ALL_PERMITTED # -#rules: -#- !TRANSACTION +#transaction: # defaultType: XA # providerType: Atomikos -#- !SQL_PARSER +# +#sqlParser: # sqlCommentParseEnabled: true # sqlStatementCache: # initialCapacity: 2000 @@ -54,7 +54,7 @@ # parseTreeCache: # initialCapacity: 128 # maximumSize: 1024 - +# #props: # max-connections-size-per-query: 1 # kernel-executor-size: 16 # Infinite by default.