This is an automated email from the ASF dual-hosted git repository. wuweijie 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 7bd85f41718 Add ReadwriteSplittingDataSourceRuleNotFoundException (#30920) 7bd85f41718 is described below commit 7bd85f417185f49f02f83b10021d67e416f919e5 Author: Liang Zhang <zhangli...@apache.org> AuthorDate: Tue Apr 16 23:08:49 2024 +0800 Add ReadwriteSplittingDataSourceRuleNotFoundException (#30920) * Refactor ReadwriteSplittingRule * Refactor ReadwriteSplittingRule * Add ReadwriteSplittingDataSourceRuleNameNotFoundException * Add ReadwriteSplittingDataSourceRuleNotFoundException --- .../content/user-manual/error-code/sql-error-code.cn.md | 9 +++++---- .../content/user-manual/error-code/sql-error-code.en.md | 9 +++++---- ...plicateReadwriteSplittingActualDataSourceException.java | 2 +- ...SplittingActualDataSourceInlineExpressionException.java | 2 +- ...equiredReadwriteSplittingActualDataSourceException.java | 2 +- ...eadwriteSplittingActualDataSourceNotFoundException.java | 2 +- ...ReadwriteSplittingDataSourceRuleNotFoundException.java} | 14 ++++++-------- .../ReadwriteSplittingStaticDataSourceRuleAttribute.java | 10 ++++++---- 8 files changed, 26 insertions(+), 24 deletions(-) diff --git a/docs/document/content/user-manual/error-code/sql-error-code.cn.md b/docs/document/content/user-manual/error-code/sql-error-code.cn.md index 6b8f41aa115..0af74654c8d 100644 --- a/docs/document/content/user-manual/error-code/sql-error-code.cn.md +++ b/docs/document/content/user-manual/error-code/sql-error-code.cn.md @@ -195,10 +195,11 @@ SQL 错误码以标准的 SQL State,Vendor Code 和详细错误信息提供, | Vendor Code | SQL State | 错误信息 | |-------------|-----------|-----------------------------------------------------------------------------| | 20200 | 42S02 | Readwrite-splitting data source rule name is required in database '%s'. | -| 20201 | 42S02 | Readwrite-splitting [READ/WRITE] data source is required in %s. | -| 20202 | 42S02 | Can not find readwrite-splitting [READ/WRITE] data source '%s' in %s. | -| 20203 | 42S01 | Readwrite-splitting [READ/WRITE] data source '%s' is duplicated in %s. | -| 20204 | 44000 | Readwrite-splitting [READ/WRITE] data source inline expression error in %s. | +| 20201 | 42S02 | Can not find readwrite-splitting data source rule '%s' in database '%s'. | +| 20202 | 42S02 | Readwrite-splitting [READ/WRITE] data source is required in %s. | +| 20203 | 42S02 | Can not find readwrite-splitting [READ/WRITE] data source '%s' in %s. | +| 20204 | 42S01 | Readwrite-splitting [READ/WRITE] data source '%s' is duplicated in %s. | +| 20205 | 44000 | Readwrite-splitting [READ/WRITE] data source inline expression error in %s. | ### SQL 方言转换 diff --git a/docs/document/content/user-manual/error-code/sql-error-code.en.md b/docs/document/content/user-manual/error-code/sql-error-code.en.md index ce9e6580c08..20d85a7fbb9 100644 --- a/docs/document/content/user-manual/error-code/sql-error-code.en.md +++ b/docs/document/content/user-manual/error-code/sql-error-code.en.md @@ -195,10 +195,11 @@ SQL error codes provide by standard `SQL State`, `Vendor Code` and `Reason`, whi | Vendor Code | SQL State | Reason | |-------------|-----------|-----------------------------------------------------------------------------| | 20200 | 42S02 | Readwrite-splitting data source rule name is required in database '%s'. | -| 20201 | 42S02 | Readwrite-splitting [READ/WRITE] data source is required in %s. | -| 20202 | 42S02 | Can not find readwrite-splitting [READ/WRITE] data source '%s' in %s. | -| 20203 | 42S01 | Readwrite-splitting [READ/WRITE] data source '%s' is duplicated in %s. | -| 20204 | 44000 | Readwrite-splitting [READ/WRITE] data source inline expression error in %s. | +| 20201 | 42S02 | Can not find readwrite-splitting data source rule '%s' in database '%s'. | +| 20202 | 42S02 | Readwrite-splitting [READ/WRITE] data source is required in %s. | +| 20203 | 42S02 | Can not find readwrite-splitting [READ/WRITE] data source '%s' in %s. | +| 20204 | 42S01 | Readwrite-splitting [READ/WRITE] data source '%s' is duplicated in %s. | +| 20205 | 44000 | Readwrite-splitting [READ/WRITE] data source inline expression error in %s. | ### SQL Dialect Translator diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/actual/DuplicateReadwriteSplittingActualDataSourceException.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/actual/DuplicateReadwriteSplittingActualDataSourceException.java index dc9fafd6e53..5e78035f967 100644 --- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/actual/DuplicateReadwriteSplittingActualDataSourceException.java +++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/actual/DuplicateReadwriteSplittingActualDataSourceException.java @@ -31,6 +31,6 @@ public final class DuplicateReadwriteSplittingActualDataSourceException extends public DuplicateReadwriteSplittingActualDataSourceException(final ReadwriteSplittingDataSourceType dataSourceType, final String dataSourceName, final ReadwriteSplittingRuleExceptionIdentifier exceptionIdentifier) { - super(XOpenSQLState.DUPLICATE, 3, "Readwrite-splitting %s data source '%s' is duplicated in %s.", dataSourceName, dataSourceType, exceptionIdentifier); + super(XOpenSQLState.DUPLICATE, 4, "Readwrite-splitting %s data source '%s' is duplicated in %s.", dataSourceName, dataSourceType, exceptionIdentifier); } } diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/actual/InvalidReadwriteSplittingActualDataSourceInlineExpressionException.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/actual/InvalidReadwriteSplittingActualDataSourceInlineExpressionException.java index a1b562e078a..ad7b6147741 100644 --- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/actual/InvalidReadwriteSplittingActualDataSourceInlineExpressionException.java +++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/actual/InvalidReadwriteSplittingActualDataSourceInlineExpressionException.java @@ -31,6 +31,6 @@ public final class InvalidReadwriteSplittingActualDataSourceInlineExpressionExce public InvalidReadwriteSplittingActualDataSourceInlineExpressionException(final ReadwriteSplittingDataSourceType dataSourceType, final ReadwriteSplittingRuleExceptionIdentifier exceptionIdentifier) { - super(XOpenSQLState.CHECK_OPTION_VIOLATION, 4, "Readwrite-splitting %s data source inline expression error in %s.", dataSourceType, exceptionIdentifier); + super(XOpenSQLState.CHECK_OPTION_VIOLATION, 5, "Readwrite-splitting %s data source inline expression error in %s.", dataSourceType, exceptionIdentifier); } } diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/actual/MissingRequiredReadwriteSplittingActualDataSourceException.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/actual/MissingRequiredReadwriteSplittingActualDataSourceException.java index 9fe7545e9a3..b0b5f8c94d8 100644 --- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/actual/MissingRequiredReadwriteSplittingActualDataSourceException.java +++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/actual/MissingRequiredReadwriteSplittingActualDataSourceException.java @@ -30,6 +30,6 @@ public final class MissingRequiredReadwriteSplittingActualDataSourceException ex private static final long serialVersionUID = 3795576963060485964L; public MissingRequiredReadwriteSplittingActualDataSourceException(final ReadwriteSplittingDataSourceType dataSourceType, final ReadwriteSplittingRuleExceptionIdentifier exceptionIdentifier) { - super(XOpenSQLState.NOT_FOUND, 1, "Readwrite-splitting %s data source is required in %s.", dataSourceType, exceptionIdentifier); + super(XOpenSQLState.NOT_FOUND, 2, "Readwrite-splitting %s data source is required in %s.", dataSourceType, exceptionIdentifier); } } diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/actual/ReadwriteSplittingActualDataSourceNotFoundException.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/actual/ReadwriteSplittingActualDataSourceNotFoundException.java index f1a85d60305..c0a080612ac 100644 --- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/actual/ReadwriteSplittingActualDataSourceNotFoundException.java +++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/actual/ReadwriteSplittingActualDataSourceNotFoundException.java @@ -31,6 +31,6 @@ public final class ReadwriteSplittingActualDataSourceNotFoundException extends R public ReadwriteSplittingActualDataSourceNotFoundException(final ReadwriteSplittingDataSourceType dataSourceType, final String dataSourceName, final ReadwriteSplittingRuleExceptionIdentifier exceptionIdentifier) { - super(XOpenSQLState.NOT_FOUND, 2, "Can not find readwrite-splitting %s data source '%s' in %s.", dataSourceType, dataSourceName, exceptionIdentifier); + super(XOpenSQLState.NOT_FOUND, 3, "Can not find readwrite-splitting %s data source '%s' in %s.", dataSourceType, dataSourceName, exceptionIdentifier); } } diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/actual/MissingRequiredReadwriteSplittingActualDataSourceException.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/logic/ReadwriteSplittingDataSourceRuleNotFoundException.java similarity index 54% copy from features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/actual/MissingRequiredReadwriteSplittingActualDataSourceException.java copy to features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/logic/ReadwriteSplittingDataSourceRuleNotFoundException.java index 9fe7545e9a3..c7e148382de 100644 --- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/actual/MissingRequiredReadwriteSplittingActualDataSourceException.java +++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/exception/logic/ReadwriteSplittingDataSourceRuleNotFoundException.java @@ -15,21 +15,19 @@ * limitations under the License. */ -package org.apache.shardingsphere.readwritesplitting.exception.actual; +package org.apache.shardingsphere.readwritesplitting.exception.logic; import org.apache.shardingsphere.infra.exception.core.external.sql.sqlstate.XOpenSQLState; -import org.apache.shardingsphere.readwritesplitting.constant.ReadwriteSplittingDataSourceType; -import org.apache.shardingsphere.readwritesplitting.exception.ReadwriteSplittingRuleExceptionIdentifier; import org.apache.shardingsphere.readwritesplitting.exception.ReadwriteSplittingSQLException; /** - * Missing readwrite-splitting required actual data source exception. + * Readwrite-splitting data source rule not found exception. */ -public final class MissingRequiredReadwriteSplittingActualDataSourceException extends ReadwriteSplittingSQLException { +public final class ReadwriteSplittingDataSourceRuleNotFoundException extends ReadwriteSplittingSQLException { - private static final long serialVersionUID = 3795576963060485964L; + private static final long serialVersionUID = -6293739163056594102L; - public MissingRequiredReadwriteSplittingActualDataSourceException(final ReadwriteSplittingDataSourceType dataSourceType, final ReadwriteSplittingRuleExceptionIdentifier exceptionIdentifier) { - super(XOpenSQLState.NOT_FOUND, 1, "Readwrite-splitting %s data source is required in %s.", dataSourceType, exceptionIdentifier); + public ReadwriteSplittingDataSourceRuleNotFoundException(final String dataSourceRuleName, final String databaseName) { + super(XOpenSQLState.NOT_FOUND, 1, "Can not find readwrite-splitting data source rule '%s' in database '%s'.", dataSourceRuleName, databaseName); } } diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/attribute/ReadwriteSplittingStaticDataSourceRuleAttribute.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/attribute/ReadwriteSplittingStaticDataSourceRuleAttribute.java index a68e3fd65bc..c49b99d50bd 100644 --- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/attribute/ReadwriteSplittingStaticDataSourceRuleAttribute.java +++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/attribute/ReadwriteSplittingStaticDataSourceRuleAttribute.java @@ -17,15 +17,16 @@ package org.apache.shardingsphere.readwritesplitting.rule.attribute; -import com.google.common.base.Preconditions; import lombok.RequiredArgsConstructor; +import org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions; import org.apache.shardingsphere.infra.instance.InstanceContext; import org.apache.shardingsphere.infra.metadata.database.schema.QualifiedDatabase; -import org.apache.shardingsphere.infra.rule.event.DataSourceStatusChangedEvent; import org.apache.shardingsphere.infra.rule.attribute.datasource.StaticDataSourceRuleAttribute; +import org.apache.shardingsphere.infra.rule.event.DataSourceStatusChangedEvent; import org.apache.shardingsphere.infra.state.datasource.DataSourceState; import org.apache.shardingsphere.mode.event.storage.StorageNodeDataSourceChangedEvent; import org.apache.shardingsphere.mode.event.storage.StorageNodeDataSourceDeletedEvent; +import org.apache.shardingsphere.readwritesplitting.exception.logic.ReadwriteSplittingDataSourceRuleNotFoundException; import org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceRule; import java.util.Collection; @@ -59,7 +60,8 @@ public final class ReadwriteSplittingStaticDataSourceRuleAttribute implements St StorageNodeDataSourceChangedEvent dataSourceEvent = (StorageNodeDataSourceChangedEvent) event; QualifiedDatabase qualifiedDatabase = dataSourceEvent.getQualifiedDatabase(); ReadwriteSplittingDataSourceRule dataSourceRule = dataSourceRules.get(qualifiedDatabase.getGroupName()); - Preconditions.checkNotNull(dataSourceRule, "Can not find readwrite-splitting data source rule in database `%s`", qualifiedDatabase.getDatabaseName()); + ShardingSpherePreconditions.checkNotNull(dataSourceRule, + () -> new ReadwriteSplittingDataSourceRuleNotFoundException(qualifiedDatabase.getGroupName(), qualifiedDatabase.getDatabaseName())); if (DataSourceState.DISABLED == dataSourceEvent.getDataSource().getStatus()) { dataSourceRule.disableDataSource(dataSourceEvent.getQualifiedDatabase().getDataSourceName()); } else { @@ -69,7 +71,7 @@ public final class ReadwriteSplittingStaticDataSourceRuleAttribute implements St @Override public void cleanStorageNodeDataSource(final String groupName) { - Preconditions.checkNotNull(dataSourceRules.get(groupName), String.format("`%s` group name not exist in database `%s`", groupName, databaseName)); + ShardingSpherePreconditions.checkState(dataSourceRules.containsKey(groupName), () -> new ReadwriteSplittingDataSourceRuleNotFoundException(groupName, databaseName)); deleteStorageNodeDataSources(dataSourceRules.get(groupName)); }