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

sunnianjun 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 4c4da09129c Add ReadwriteSplittingDataSourceType to optimize 
ReadwriteSplittingSQLException (#30880)
4c4da09129c is described below

commit 4c4da09129c6308c794591feadc96d87a17576ca
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Apr 14 18:03:34 2024 +0800

    Add ReadwriteSplittingDataSourceType to optimize 
ReadwriteSplittingSQLException (#30880)
    
    * Add ReadwriteSplittingDataSourceType to optimize 
ReadwriteSplittingSQLException
    
    * Add ReadwriteSplittingDataSourceType to optimize 
ReadwriteSplittingSQLException
    
    * Add ReadwriteSplittingDataSourceType to optimize 
ReadwriteSplittingSQLException
    
    * Add ReadwriteSplittingDataSourceType to optimize 
ReadwriteSplittingSQLException
---
 .../ReadwriteSplittingRuleConfigurationChecker.java      | 10 ++++++----
 .../ReadwriteSplittingDataSourceType.java}               | 14 ++++----------
 .../exception/DataSourceNameNotExistedException.java     |  3 ++-
 .../exception/DuplicateDataSourceException.java          |  3 ++-
 .../InvalidInlineExpressionDataSourcesException.java     |  3 ++-
 .../readwritesplitting/rule/ReadwriteSplittingRule.java  |  6 ++++--
 .../checker/ReadwriteSplittingRuleStatementChecker.java  | 16 ++++++++--------
 .../update/AlterReadwriteSplittingRuleExecutorTest.java  | 14 +++++++-------
 .../update/CreateReadwriteSplittingRuleExecutorTest.java | 13 +++++++------
 .../connection/DriverDatabaseConnectionManagerTest.java  |  2 +-
 10 files changed, 43 insertions(+), 41 deletions(-)

diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationChecker.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationChecker.java
index fb371c3a0b2..8a2ce891dca 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationChecker.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationChecker.java
@@ -29,6 +29,7 @@ import 
org.apache.shardingsphere.infra.rule.attribute.datasource.DataSourceMappe
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.constant.ReadwriteSplittingDataSourceType;
 import 
org.apache.shardingsphere.readwritesplitting.constant.ReadwriteSplittingOrder;
 import 
org.apache.shardingsphere.readwritesplitting.exception.DataSourceNameNotExistedException;
 import 
org.apache.shardingsphere.readwritesplitting.exception.DuplicateDataSourceException;
@@ -79,8 +80,8 @@ public final class ReadwriteSplittingRuleConfigurationChecker 
implements RuleCon
                                            final 
ReadwriteSplittingDataSourceRuleConfiguration config, final 
Collection<ShardingSphereRule> builtRules) {
         for (String each : 
InlineExpressionParserFactory.newInstance(config.getWriteDataSourceName()).splitAndEvaluate())
 {
             
ShardingSpherePreconditions.checkState(dataSourceMap.containsKey(each) || 
containsInOtherRules(each, builtRules),
-                    () -> new DataSourceNameNotExistedException("Write", each, 
databaseName));
-            
ShardingSpherePreconditions.checkState(writeDataSourceNames.add(each), () -> 
new DuplicateDataSourceException("write", each, databaseName));
+                    () -> new 
DataSourceNameNotExistedException(ReadwriteSplittingDataSourceType.WRITE, each, 
databaseName));
+            
ShardingSpherePreconditions.checkState(writeDataSourceNames.add(each), () -> 
new DuplicateDataSourceException(ReadwriteSplittingDataSourceType.WRITE, each, 
databaseName));
         }
     }
     
@@ -92,8 +93,9 @@ public final class ReadwriteSplittingRuleConfigurationChecker 
implements RuleCon
     private void checkReadeDataSourceNames(final String databaseName, final 
Map<String, DataSource> dataSourceMap,
                                            final Collection<String> 
readDataSourceNames, final String readDataSourceName, final 
Collection<ShardingSphereRule> builtRules) {
         for (String each : 
InlineExpressionParserFactory.newInstance(readDataSourceName).splitAndEvaluate())
 {
-            
ShardingSpherePreconditions.checkState(dataSourceMap.containsKey(each) || 
containsInOtherRules(each, builtRules), () -> new 
DataSourceNameNotExistedException("Read", each, databaseName));
-            
ShardingSpherePreconditions.checkState(readDataSourceNames.add(each), () -> new 
DuplicateDataSourceException("read", each, databaseName));
+            
ShardingSpherePreconditions.checkState(dataSourceMap.containsKey(each) || 
containsInOtherRules(each, builtRules),
+                    () -> new 
DataSourceNameNotExistedException(ReadwriteSplittingDataSourceType.READ, each, 
databaseName));
+            
ShardingSpherePreconditions.checkState(readDataSourceNames.add(each), () -> new 
DuplicateDataSourceException(ReadwriteSplittingDataSourceType.READ, each, 
databaseName));
         }
     }
     
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/InvalidInlineExpressionDataSourcesException.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/constant/ReadwriteSplittingDataSourceType.java
similarity index 57%
copy from 
features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/InvalidInlineExpressionDataSourcesException.java
copy to 
features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/constant/ReadwriteSplittingDataSourceType.java
index 4d1641ff82d..21df31bc075 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/InvalidInlineExpressionDataSourcesException.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/constant/ReadwriteSplittingDataSourceType.java
@@ -15,18 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.readwritesplitting.exception;
-
-import 
org.apache.shardingsphere.infra.exception.core.external.sql.sqlstate.XOpenSQLState;
+package org.apache.shardingsphere.readwritesplitting.constant;
 
 /**
- * Invalid inline expression data sources exception.
+ * Readwrite-splitting data source type.
  */
-public final class InvalidInlineExpressionDataSourcesException extends 
ReadwriteSplittingSQLException {
-    
-    private static final long serialVersionUID = 87659916563551964L;
+public enum ReadwriteSplittingDataSourceType {
     
-    public InvalidInlineExpressionDataSourcesException(final String 
dataSourceType) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 5, "%s data source names 
size error on inline expression.", dataSourceType);
-    }
+    WRITE, READ
 }
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/DataSourceNameNotExistedException.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/DataSourceNameNotExistedException.java
index 5043cb7a8e2..9f90523d99e 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/DataSourceNameNotExistedException.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/DataSourceNameNotExistedException.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.readwritesplitting.exception;
 
 import 
org.apache.shardingsphere.infra.exception.core.external.sql.sqlstate.XOpenSQLState;
+import 
org.apache.shardingsphere.readwritesplitting.constant.ReadwriteSplittingDataSourceType;
 
 /**
  * Data source name not existed exception.
@@ -26,7 +27,7 @@ public final class DataSourceNameNotExistedException extends 
ReadwriteSplittingS
     
     private static final long serialVersionUID = 1284608200400804784L;
     
-    public DataSourceNameNotExistedException(final String dataSourceType, 
final String dataSourceName, final String databaseName) {
+    public DataSourceNameNotExistedException(final 
ReadwriteSplittingDataSourceType dataSourceType, final String dataSourceName, 
final String databaseName) {
         super(XOpenSQLState.NOT_FOUND, 4, "%s data source name '%s' not in 
database '%s'.", dataSourceType, dataSourceName, databaseName);
     }
 }
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/DuplicateDataSourceException.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/DuplicateDataSourceException.java
index a4621977892..252eb4c3593 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/DuplicateDataSourceException.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/DuplicateDataSourceException.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.readwritesplitting.exception;
 
 import 
org.apache.shardingsphere.infra.exception.core.external.sql.sqlstate.XOpenSQLState;
+import 
org.apache.shardingsphere.readwritesplitting.constant.ReadwriteSplittingDataSourceType;
 
 /**
  * Duplicate write data source exception.
@@ -26,7 +27,7 @@ public final class DuplicateDataSourceException extends 
ReadwriteSplittingSQLExc
     
     private static final long serialVersionUID = -58671655670347084L;
     
-    public DuplicateDataSourceException(final String dataSourceType, final 
String dataSourceName, final String databaseName) {
+    public DuplicateDataSourceException(final ReadwriteSplittingDataSourceType 
dataSourceType, final String dataSourceName, final String databaseName) {
         super(XOpenSQLState.DUPLICATE, 3, "Duplicated %s data source '%s' in 
database '%s'.", dataSourceType, dataSourceName, databaseName);
     }
 }
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/InvalidInlineExpressionDataSourcesException.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/InvalidInlineExpressionDataSourcesException.java
index 4d1641ff82d..cf97c84faf6 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/InvalidInlineExpressionDataSourcesException.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/InvalidInlineExpressionDataSourcesException.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.readwritesplitting.exception;
 
 import 
org.apache.shardingsphere.infra.exception.core.external.sql.sqlstate.XOpenSQLState;
+import 
org.apache.shardingsphere.readwritesplitting.constant.ReadwriteSplittingDataSourceType;
 
 /**
  * Invalid inline expression data sources exception.
@@ -26,7 +27,7 @@ public final class 
InvalidInlineExpressionDataSourcesException extends Readwrite
     
     private static final long serialVersionUID = 87659916563551964L;
     
-    public InvalidInlineExpressionDataSourcesException(final String 
dataSourceType) {
+    public InvalidInlineExpressionDataSourcesException(final 
ReadwriteSplittingDataSourceType dataSourceType) {
         super(XOpenSQLState.CHECK_OPTION_VIOLATION, 5, "%s data source names 
size error on inline expression.", dataSourceType);
     }
 }
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java
index c5dca7e2981..e88c0f19a9d 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java
@@ -28,6 +28,7 @@ import 
org.apache.shardingsphere.infra.rule.attribute.RuleAttributes;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.constant.ReadwriteSplittingDataSourceType;
 import 
org.apache.shardingsphere.readwritesplitting.exception.InvalidInlineExpressionDataSourcesException;
 import 
org.apache.shardingsphere.readwritesplitting.rule.attribute.ReadwriteSplittingDataSourceMapperRuleAttribute;
 import 
org.apache.shardingsphere.readwritesplitting.rule.attribute.ReadwriteSplittingExportableRuleAttribute;
@@ -97,9 +98,10 @@ public final class ReadwriteSplittingRule implements 
DatabaseRule {
         List<String> inlineWriteDatasourceNames = 
InlineExpressionParserFactory.newInstance(config.getWriteDataSourceName()).splitAndEvaluate();
         List<List<String>> inlineReadDatasourceNames = 
config.getReadDataSourceNames().stream()
                 .map(each -> 
InlineExpressionParserFactory.newInstance(each).splitAndEvaluate()).collect(Collectors.toList());
-        
ShardingSpherePreconditions.checkState(inlineWriteDatasourceNames.size() == 
inlineReadwriteDataSourceNames.size(), () -> new 
InvalidInlineExpressionDataSourcesException("Write"));
+        
ShardingSpherePreconditions.checkState(inlineWriteDatasourceNames.size() == 
inlineReadwriteDataSourceNames.size(),
+                () -> new 
InvalidInlineExpressionDataSourcesException(ReadwriteSplittingDataSourceType.WRITE));
         inlineReadDatasourceNames.forEach(each -> 
ShardingSpherePreconditions.checkState(each.size() == 
inlineReadwriteDataSourceNames.size(),
-                () -> new 
InvalidInlineExpressionDataSourcesException("Read")));
+                () -> new 
InvalidInlineExpressionDataSourcesException(ReadwriteSplittingDataSourceType.READ)));
         Map<String, ReadwriteSplittingDataSourceRule> result = new 
LinkedHashMap<>(inlineReadwriteDataSourceNames.size(), 1F);
         for (int i = 0; i < inlineReadwriteDataSourceNames.size(); i++) {
             ReadwriteSplittingDataSourceRuleConfiguration staticConfig = 
createStaticDataSourceRuleConfiguration(
diff --git 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/checker/ReadwriteSplittingRuleStatementChecker.java
 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/checker/ReadwriteSplittingRuleStatementChecker.java
index 9e6f9e2ccc7..70614bd6ffd 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/checker/ReadwriteSplittingRuleStatementChecker.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/checker/ReadwriteSplittingRuleStatementChecker.java
@@ -20,12 +20,12 @@ package 
org.apache.shardingsphere.readwritesplitting.distsql.handler.checker;
 import com.google.common.base.Strings;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
+import 
org.apache.shardingsphere.infra.algorithm.loadbalancer.core.LoadBalanceAlgorithm;
+import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.resource.storageunit.MissingRequiredStorageUnitsException;
 import 
org.apache.shardingsphere.infra.exception.kernel.metadata.rule.DuplicateRuleException;
 import 
org.apache.shardingsphere.infra.exception.kernel.metadata.rule.InvalidRuleConfigurationException;
 import 
org.apache.shardingsphere.infra.exception.kernel.metadata.rule.MissingRequiredRuleException;
-import 
org.apache.shardingsphere.infra.exception.kernel.metadata.resource.storageunit.MissingRequiredStorageUnitsException;
-import 
org.apache.shardingsphere.infra.algorithm.loadbalancer.core.LoadBalanceAlgorithm;
-import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
 import 
org.apache.shardingsphere.infra.rule.attribute.datasource.DataSourceMapperRuleAttribute;
@@ -33,7 +33,9 @@ import 
org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.transaction.TransactionalReadQueryStrategy;
+import 
org.apache.shardingsphere.readwritesplitting.constant.ReadwriteSplittingDataSourceType;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.segment.ReadwriteSplittingRuleSegment;
+import 
org.apache.shardingsphere.readwritesplitting.exception.DuplicateDataSourceException;
 
 import java.util.Arrays;
 import java.util.Collection;
@@ -177,8 +179,8 @@ public final class ReadwriteSplittingRuleStatementChecker {
         segments.forEach(each -> {
             if (!Strings.isNullOrEmpty(each.getWriteDataSource())) {
                 String writeDataSource = each.getWriteDataSource();
-                
ShardingSpherePreconditions.checkState(writeDataSourceNames.add(writeDataSource),
 () -> new InvalidRuleConfigurationException("Readwrite-splitting", 
each.getName(),
-                        String.format("Can not config duplicate write storage 
unit `%s` in database `%s`", writeDataSource, databaseName)));
+                
ShardingSpherePreconditions.checkState(writeDataSourceNames.add(writeDataSource),
+                        () -> new 
DuplicateDataSourceException(ReadwriteSplittingDataSourceType.WRITE, 
writeDataSource, databaseName));
             }
         });
     }
@@ -193,9 +195,7 @@ public final class ReadwriteSplittingRuleStatementChecker {
     
     private static void checkDuplicateReadDataSourceNames(final String 
databaseName, final ReadwriteSplittingRuleSegment segment, final 
Collection<String> readDataSourceNames) {
         for (String each : segment.getReadDataSources()) {
-            
ShardingSpherePreconditions.checkState(readDataSourceNames.add(each),
-                    () -> new InvalidRuleConfigurationException(
-                            "Readwrite-splitting", segment.getName(), 
String.format("Can not config duplicate read storage unit `%s` in database 
`%s`.", each, databaseName)));
+            
ShardingSpherePreconditions.checkState(readDataSourceNames.add(each), () -> new 
DuplicateDataSourceException(ReadwriteSplittingDataSourceType.READ, each, 
databaseName));
         }
     }
     
diff --git 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleExecutorTest.java
 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleExecutorTest.java
index 2cd762bffd1..29bf42bdaa8 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleExecutorTest.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleExecutorTest.java
@@ -17,10 +17,9 @@
 
 package org.apache.shardingsphere.readwritesplitting.distsql.handler.update;
 
-import 
org.apache.shardingsphere.infra.exception.kernel.metadata.rule.InvalidRuleConfigurationException;
-import 
org.apache.shardingsphere.infra.exception.kernel.metadata.rule.MissingRequiredRuleException;
-import 
org.apache.shardingsphere.infra.exception.kernel.metadata.resource.storageunit.MissingRequiredStorageUnitsException;
 import org.apache.shardingsphere.distsql.segment.AlgorithmSegment;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.resource.storageunit.MissingRequiredStorageUnitsException;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.rule.MissingRequiredRuleException;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
 import 
org.apache.shardingsphere.infra.spi.exception.ServiceProviderNotFoundException;
@@ -28,6 +27,7 @@ import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleCo
 import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.segment.ReadwriteSplittingRuleSegment;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.statement.AlterReadwriteSplittingRuleStatement;
+import 
org.apache.shardingsphere.readwritesplitting.exception.DuplicateDataSourceException;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -99,7 +99,7 @@ class AlterReadwriteSplittingRuleExecutorTest {
         ReadwriteSplittingRule rule = mock(ReadwriteSplittingRule.class);
         
when(rule.getConfiguration()).thenReturn(createCurrentRuleConfigurationWithMultipleRules());
         executor.setRule(rule);
-        assertThrows(InvalidRuleConfigurationException.class,
+        assertThrows(DuplicateDataSourceException.class,
                 () -> 
executor.checkBeforeUpdate(createSQLStatementWithDuplicateWriteResourceNames("readwrite_ds_0",
 "readwrite_ds_1", "TEST")));
     }
     
@@ -110,7 +110,7 @@ class AlterReadwriteSplittingRuleExecutorTest {
         ReadwriteSplittingRule rule = mock(ReadwriteSplittingRule.class);
         
when(rule.getConfiguration()).thenReturn(createCurrentRuleConfigurationWithMultipleRules());
         executor.setRule(rule);
-        assertThrows(InvalidRuleConfigurationException.class,
+        assertThrows(DuplicateDataSourceException.class,
                 () -> executor.checkBeforeUpdate(
                         createSQLStatement("readwrite_ds_0", "ds_write_1", 
Arrays.asList("read_ds_0", "read_ds_1"), "TEST")));
     }
@@ -122,7 +122,7 @@ class AlterReadwriteSplittingRuleExecutorTest {
         ReadwriteSplittingRule rule = mock(ReadwriteSplittingRule.class);
         
when(rule.getConfiguration()).thenReturn(createCurrentRuleConfigurationWithMultipleRules());
         executor.setRule(rule);
-        assertThrows(InvalidRuleConfigurationException.class,
+        assertThrows(DuplicateDataSourceException.class,
                 () -> 
executor.checkBeforeUpdate(createSQLStatementWithDuplicateReadResourceNames("readwrite_ds_0",
 "readwrite_ds_1", "TEST")));
     }
     
@@ -133,7 +133,7 @@ class AlterReadwriteSplittingRuleExecutorTest {
         ReadwriteSplittingRule rule = mock(ReadwriteSplittingRule.class);
         
when(rule.getConfiguration()).thenReturn(createCurrentRuleConfigurationWithMultipleRules());
         executor.setRule(rule);
-        assertThrows(InvalidRuleConfigurationException.class,
+        assertThrows(DuplicateDataSourceException.class,
                 () -> 
executor.checkBeforeUpdate(createSQLStatement("readwrite_ds_1", "write_ds_1", 
Arrays.asList("read_ds_0_0", "read_ds_0_1"), "TEST")));
     }
     
diff --git 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleExecutorTest.java
 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleExecutorTest.java
index 5d25783d117..b3a4bb7b800 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleExecutorTest.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleExecutorTest.java
@@ -17,10 +17,10 @@
 
 package org.apache.shardingsphere.readwritesplitting.distsql.handler.update;
 
+import org.apache.shardingsphere.distsql.segment.AlgorithmSegment;
+import 
org.apache.shardingsphere.infra.exception.kernel.metadata.resource.storageunit.MissingRequiredStorageUnitsException;
 import 
org.apache.shardingsphere.infra.exception.kernel.metadata.rule.DuplicateRuleException;
 import 
org.apache.shardingsphere.infra.exception.kernel.metadata.rule.InvalidRuleConfigurationException;
-import 
org.apache.shardingsphere.infra.exception.kernel.metadata.resource.storageunit.MissingRequiredStorageUnitsException;
-import org.apache.shardingsphere.distsql.segment.AlgorithmSegment;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
 import 
org.apache.shardingsphere.infra.rule.attribute.datasource.DataSourceMapperRuleAttribute;
@@ -29,6 +29,7 @@ import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleCo
 import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.segment.ReadwriteSplittingRuleSegment;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.statement.CreateReadwriteSplittingRuleStatement;
+import 
org.apache.shardingsphere.readwritesplitting.exception.DuplicateDataSourceException;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
 import org.apache.shardingsphere.test.mock.AutoMockExtension;
 import org.apache.shardingsphere.test.mock.StaticMockSettings;
@@ -107,7 +108,7 @@ class CreateReadwriteSplittingRuleExecutorTest {
     
     @Test
     void assertCheckSQLStatementWithDuplicateWriteResourceNamesInStatement() {
-        assertThrows(InvalidRuleConfigurationException.class,
+        assertThrows(DuplicateDataSourceException.class,
                 () -> 
executor.checkBeforeUpdate(createSQLStatementWithDuplicateWriteResourceNames("write_ds_0",
 "write_ds_1", "TEST")));
     }
     
@@ -116,13 +117,13 @@ class CreateReadwriteSplittingRuleExecutorTest {
         ReadwriteSplittingRule rule = mock(ReadwriteSplittingRule.class);
         
when(rule.getConfiguration()).thenReturn(createCurrentRuleConfiguration());
         executor.setRule(rule);
-        assertThrows(InvalidRuleConfigurationException.class,
+        assertThrows(DuplicateDataSourceException.class,
                 () -> 
executor.checkBeforeUpdate(createSQLStatement("readwrite_ds_1", "ds_write", 
Arrays.asList("read_ds_0", "read_ds_1"), "TEST")));
     }
     
     @Test
     void assertCheckSQLStatementWithDuplicateReadResourceNamesInStatement() {
-        assertThrows(InvalidRuleConfigurationException.class, () -> 
executor.checkBeforeUpdate(createSQLStatementWithDuplicateReadResourceNames("write_ds_0",
 "write_ds_1", "TEST")));
+        assertThrows(DuplicateDataSourceException.class, () -> 
executor.checkBeforeUpdate(createSQLStatementWithDuplicateReadResourceNames("write_ds_0",
 "write_ds_1", "TEST")));
     }
     
     @Test
@@ -130,7 +131,7 @@ class CreateReadwriteSplittingRuleExecutorTest {
         ReadwriteSplittingRule rule = mock(ReadwriteSplittingRule.class);
         
when(rule.getConfiguration()).thenReturn(createCurrentRuleConfiguration());
         executor.setRule(rule);
-        assertThrows(InvalidRuleConfigurationException.class,
+        assertThrows(DuplicateDataSourceException.class,
                 () -> 
executor.checkBeforeUpdate(createSQLStatement("readwrite_ds_1", "write_ds_1", 
Arrays.asList("read_ds_0", "read_ds_1"), "TEST")));
     }
     
diff --git 
a/jdbc/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/DriverDatabaseConnectionManagerTest.java
 
b/jdbc/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/DriverDatabaseConnectionManagerTest.java
index 314c485d143..1256fe37b78 100644
--- 
a/jdbc/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/DriverDatabaseConnectionManagerTest.java
+++ 
b/jdbc/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/DriverDatabaseConnectionManagerTest.java
@@ -218,6 +218,6 @@ class DriverDatabaseConnectionManagerTest {
     void assertGetConnectionsWhenConnectionCreateFailed() {
         SQLException ex = assertThrows(SQLException.class, () -> 
databaseConnectionManager.getConnections("invalid_ds", 0, 3, 
ConnectionMode.CONNECTION_STRICTLY));
         assertThat(ex.getMessage(), is("Can not get 3 connections one time, 
partition succeed connection(0) have released. "
-                + "Please consider increasing the `maxPoolSize` of the data 
sources or decreasing the `max-connections-size-per-query` in properties."));
+                + "Please consider increasing the 'maxPoolSize' of the data 
sources or decreasing the 'max-connections-size-per-query' in properties."));
     }
 }

Reply via email to