You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by ji...@apache.org on 2022/11/29 03:36:32 UTC
[shardingsphere] branch master updated: Remove the exclamation mark in the proxy's global rule configuration #22329 (#22457)
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 <10...@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.