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.