This is an automated email from the ASF dual-hosted git repository.
zhonghongsheng 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 e37d0a86615 Optimize algorithm error code and message for sharding
algorithm (#23367)
e37d0a86615 is described below
commit e37d0a8661563d6116f8a00b3473b1166e811d70
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Fri Jan 6 12:18:50 2023 +0800
Optimize algorithm error code and message for sharding algorithm (#23367)
* Optimize exception handle logic in sharding api module
* Add new SnowflakeClockMoveBackException to handle exception
* fix unit test
* Add MismatchedComplexInlineShardingAlgorithmColumnAndValueSizeException,
ShardingValueOffsetException to handle related exceptions
---
.../user-manual/error-code/sql-error-code.cn.md | 9 ++++++---
.../user-manual/error-code/sql-error-code.en.md | 7 +++++--
.../keygen/KeyGenerateStrategyConfiguration.java | 3 ---
.../ComplexShardingStrategyConfiguration.java | 4 ----
.../sharding/HintShardingStrategyConfiguration.java | 2 --
.../StandardShardingStrategyConfiguration.java | 2 --
.../keygen/SnowflakeKeyGenerateAlgorithm.java | 5 ++---
.../complex/ComplexInlineShardingAlgorithm.java | 6 +++---
.../algorithm/sharding/mod/ModShardingAlgorithm.java | 4 ++--
.../range/BoundaryBasedRangeShardingAlgorithm.java | 3 +--
.../checker/ShardingRuleConfigurationChecker.java | 19 +++++++++++++------
.../keygen/SnowflakeClockMoveBackException.java} | 12 ++++++------
...ShardingAlgorithmColumnAndValueSizeException.java} | 12 ++++++------
.../ShardingValueOffsetException.java} | 12 ++++++------
...on.java => MissingRequiredAlgorithmException.java} | 8 ++++----
...ava => MissingRequiredConfigurationException.java} | 8 ++++----
.../keygen/SnowflakeKeyGenerateAlgorithmTest.java | 3 ++-
.../checker/ShardingRuleConfigurationCheckerTest.java | 4 ++--
.../keygen/CosIdSnowflakeKeyGenerateAlgorithm.java | 7 ++++---
.../AbstractCosIdIntervalShardingAlgorithm.java | 5 +++--
.../sharding/mod/CosIdModShardingAlgorithm.java | 5 +++--
.../CosIdSnowflakeKeyGenerateAlgorithmTest.java | 3 ++-
22 files changed, 74 insertions(+), 69 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 5db189f7494..f5d78c7e83e 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
@@ -143,7 +143,7 @@ SQL 错误码以标准的 SQL State,Vendor Code 和详细错误信息提供,
### 数据分片
-| SQL State | Vendor Code | 错误信息
|
+| SQL State | Vendor Code | 错误信息
|
| ---------
|-------------|------------------------------------------------------------------------------------------------------------------------------|
| 44000 | 20000 | Can not find table rule with logic tables \`%s\`.
|
| 44000 | 20001 | Can not get uniformed table structure for logic
table \`%s\`, it has different meta data of actual tables are as follows: %s |
@@ -155,11 +155,12 @@ SQL 错误码以标准的 SQL State,Vendor Code 和详细错误信息提供,
| 42S01 | 20007 | Index \`%s\` already exists.
|
| 42S02 | 20008 | Index \`%s\` does not exist.
|
| 42S01 | 20009 | View name has to bind to %s tables.
|
-| 44000 | 20010 | \`%s\` sharding algorithm does not exist in
database \`%s\`.
|
-| 44000 | 20011 | \`%s\` sharding configuration does not exist in
database \`%s\`. |
+| 44000 | 20010 | \`%s\` algorithm does not exist in database
\`%s\`.
|
+| 44000 | 20011 | \`%s\` configuration does not exist in database
\`%s\`. |
| 44000 | 20020 | Sharding value can't be null in insert statement.
|
| HY004 | 20021 | Found different types for sharding value \`%s\`.
|
| HY004 | 20022 | Invalid %s, datetime pattern should be \`%s\`,
value is \`%s\`. |
+| 44000 | 20023 | Sharding value %s subtract stop offset %d can not
be less than start offset %d. |
| 0A000 | 20040 | Can not support operation \`%s\` with sharding
table \`%s\`. |
| 44000 | 20041 | Can not update sharding value for table \`%s\`.
|
| 0A000 | 20042 | The CREATE VIEW statement contains unsupported
query statement. |
@@ -177,8 +178,10 @@ SQL 错误码以标准的 SQL State,Vendor Code 和详细错误信息提供,
| HY000 | 20081 | Routed target \`%s\` does not exist, available
targets are \`%s\`. |
| 44000 | 20082 | Inline sharding algorithms expression \`%s\` and
sharding column \`%s\` do not match. |
| HY000 | 20083 | Sharding algorithm \`%s\` initialization failed,
reason is: %s. |
+| 44000 | 20084 | Complex inline algorithm need %d sharing columns,
but only found %d. |
| 44000 | 20090 | Can not find strategy for generate keys with table
\`%s\`. |
| HY000 | 20091 | Key generate algorithm \`%s\` initialization
failed, reason is: %s.
|
+| HY000 | 20092 | Clock is moving backwards, last time is %d
milliseconds, current time is %d milliseconds.
|
| HY000 | 20099 | Sharding plugin error, reason is: %s
|
### 读写分离
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 6233a11532c..0f6c7f01b2f 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
@@ -155,11 +155,12 @@ SQL error codes provide by standard `SQL State`, `Vendor
Code` and `Reason`, whi
| 42S01 | 20007 | Index \`%s\` already exists.
|
| 42S02 | 20008 | Index \`%s\` does not exist.
|
| 42S01 | 20009 | View name has to bind to %s tables.
|
-| 44000 | 20010 | \`%s\` sharding algorithm does not exist in
database \`%s\`.
|
-| 44000 | 20011 | \`%s\` sharding configuration does not exist in
database \`%s\`. |
+| 44000 | 20010 | \`%s\` algorithm does not exist in database
\`%s\`.
|
+| 44000 | 20011 | \`%s\` configuration does not exist in database
\`%s\`. |
| 44000 | 20020 | Sharding value can't be null in insert statement.
|
| HY004 | 20021 | Found different types for sharding value \`%s\`.
|
| HY004 | 20022 | Invalid %s, datetime pattern should be \`%s\`,
value is \`%s\`. |
+| 44000 | 20023 | Sharding value %s subtract stop offset %d can not
be less than start offset %d. |
| 0A000 | 20040 | Can not support operation \`%s\` with sharding
table \`%s\`. |
| 44000 | 20041 | Can not update sharding value for table \`%s\`.
|
| 0A000 | 20042 | The CREATE VIEW statement contains unsupported
query statement. |
@@ -177,8 +178,10 @@ SQL error codes provide by standard `SQL State`, `Vendor
Code` and `Reason`, whi
| HY000 | 20081 | Routed target \`%s\` does not exist, available
targets are \`%s\`. |
| 44000 | 20082 | Inline sharding algorithms expression \`%s\` and
sharding column \`%s\` do not match. |
| HY000 | 20083 | Sharding algorithm \`%s\` initialization failed,
reason is: %s. |
+| 44000 | 20084 | Complex inline algorithm need %d sharing columns,
but only found %d. |
| 44000 | 20090 | Can not find strategy for generate keys with table
\`%s\`. |
| HY000 | 20091 | Key generate algorithm \`%s\` initialization
failed, reason is: %s.
|
+| HY000 | 20092 | Clock is moving backwards, last time is %d
milliseconds, current time is %d milliseconds.
|
| HY000 | 20099 | Sharding plugin error, reason is: %s
|
### Readwrite Splitting
diff --git
a/features/sharding/api/src/main/java/org/apache/shardingsphere/sharding/api/config/strategy/keygen/KeyGenerateStrategyConfiguration.java
b/features/sharding/api/src/main/java/org/apache/shardingsphere/sharding/api/config/strategy/keygen/KeyGenerateStrategyConfiguration.java
index e4bf621c74d..539f1048db1 100644
---
a/features/sharding/api/src/main/java/org/apache/shardingsphere/sharding/api/config/strategy/keygen/KeyGenerateStrategyConfiguration.java
+++
b/features/sharding/api/src/main/java/org/apache/shardingsphere/sharding/api/config/strategy/keygen/KeyGenerateStrategyConfiguration.java
@@ -17,8 +17,6 @@
package org.apache.shardingsphere.sharding.api.config.strategy.keygen;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
import lombok.Getter;
/**
@@ -32,7 +30,6 @@ public final class KeyGenerateStrategyConfiguration {
private final String keyGeneratorName;
public KeyGenerateStrategyConfiguration(final String column, final String
keyGeneratorName) {
- Preconditions.checkArgument(!Strings.isNullOrEmpty(column), "Column is
required.");
this.column = column;
this.keyGeneratorName = keyGeneratorName;
}
diff --git
a/features/sharding/api/src/main/java/org/apache/shardingsphere/sharding/api/config/strategy/sharding/ComplexShardingStrategyConfiguration.java
b/features/sharding/api/src/main/java/org/apache/shardingsphere/sharding/api/config/strategy/sharding/ComplexShardingStrategyConfiguration.java
index ce4ddceeee6..e00567cd584 100644
---
a/features/sharding/api/src/main/java/org/apache/shardingsphere/sharding/api/config/strategy/sharding/ComplexShardingStrategyConfiguration.java
+++
b/features/sharding/api/src/main/java/org/apache/shardingsphere/sharding/api/config/strategy/sharding/ComplexShardingStrategyConfiguration.java
@@ -17,8 +17,6 @@
package org.apache.shardingsphere.sharding.api.config.strategy.sharding;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
import lombok.Getter;
/**
@@ -32,8 +30,6 @@ public final class ComplexShardingStrategyConfiguration
implements ShardingStrat
private final String shardingAlgorithmName;
public ComplexShardingStrategyConfiguration(final String shardingColumns,
final String shardingAlgorithmName) {
- Preconditions.checkArgument(!Strings.isNullOrEmpty(shardingColumns),
"Sharding columns are required.");
- Preconditions.checkNotNull(shardingAlgorithmName, "Sharding algorithm
name is required.");
this.shardingColumns = shardingColumns;
this.shardingAlgorithmName = shardingAlgorithmName;
}
diff --git
a/features/sharding/api/src/main/java/org/apache/shardingsphere/sharding/api/config/strategy/sharding/HintShardingStrategyConfiguration.java
b/features/sharding/api/src/main/java/org/apache/shardingsphere/sharding/api/config/strategy/sharding/HintShardingStrategyConfiguration.java
index 30f14a80b6e..2563cc30e04 100644
---
a/features/sharding/api/src/main/java/org/apache/shardingsphere/sharding/api/config/strategy/sharding/HintShardingStrategyConfiguration.java
+++
b/features/sharding/api/src/main/java/org/apache/shardingsphere/sharding/api/config/strategy/sharding/HintShardingStrategyConfiguration.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.sharding.api.config.strategy.sharding;
-import com.google.common.base.Preconditions;
import lombok.Getter;
/**
@@ -29,7 +28,6 @@ public final class HintShardingStrategyConfiguration
implements ShardingStrategy
private final String shardingAlgorithmName;
public HintShardingStrategyConfiguration(final String
shardingAlgorithmName) {
- Preconditions.checkNotNull(shardingAlgorithmName, "Sharding algorithm
name is required.");
this.shardingAlgorithmName = shardingAlgorithmName;
}
diff --git
a/features/sharding/api/src/main/java/org/apache/shardingsphere/sharding/api/config/strategy/sharding/StandardShardingStrategyConfiguration.java
b/features/sharding/api/src/main/java/org/apache/shardingsphere/sharding/api/config/strategy/sharding/StandardShardingStrategyConfiguration.java
index 013a216bd17..ac240fa7b9e 100644
---
a/features/sharding/api/src/main/java/org/apache/shardingsphere/sharding/api/config/strategy/sharding/StandardShardingStrategyConfiguration.java
+++
b/features/sharding/api/src/main/java/org/apache/shardingsphere/sharding/api/config/strategy/sharding/StandardShardingStrategyConfiguration.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.sharding.api.config.strategy.sharding;
-import com.google.common.base.Preconditions;
import lombok.Getter;
/**
@@ -31,7 +30,6 @@ public final class StandardShardingStrategyConfiguration
implements ShardingStra
private final String shardingAlgorithmName;
public StandardShardingStrategyConfiguration(final String shardingColumn,
final String shardingAlgorithmName) {
- Preconditions.checkNotNull(shardingAlgorithmName, "Sharding algorithm
name is required.");
this.shardingColumn = shardingColumn;
this.shardingAlgorithmName = shardingAlgorithmName;
}
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/keygen/SnowflakeKeyGenerateAlgorithm.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/keygen/SnowflakeKeyGenerateAlgorithm.java
index 6381673d19c..453e9f09cfb 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/keygen/SnowflakeKeyGenerateAlgorithm.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/keygen/SnowflakeKeyGenerateAlgorithm.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.sharding.algorithm.keygen;
-import com.google.common.base.Preconditions;
import lombok.Getter;
import lombok.Setter;
import lombok.SneakyThrows;
@@ -25,6 +24,7 @@ import
org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.instance.InstanceContextAware;
import
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
import
org.apache.shardingsphere.sharding.exception.algorithm.keygen.KeyGenerateAlgorithmInitializationException;
+import
org.apache.shardingsphere.sharding.exception.algorithm.keygen.SnowflakeClockMoveBackException;
import org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm;
import java.util.Calendar;
@@ -142,8 +142,7 @@ public final class SnowflakeKeyGenerateAlgorithm implements
KeyGenerateAlgorithm
return false;
}
long timeDifferenceMilliseconds = lastMilliseconds -
currentMilliseconds;
- Preconditions.checkState(timeDifferenceMilliseconds <
maxTolerateTimeDifferenceMilliseconds,
- "Clock is moving backwards, last time is %d milliseconds,
current time is %d milliseconds", lastMilliseconds, currentMilliseconds);
+ ShardingSpherePreconditions.checkState(timeDifferenceMilliseconds <
maxTolerateTimeDifferenceMilliseconds, () -> new
SnowflakeClockMoveBackException(lastMilliseconds, currentMilliseconds));
Thread.sleep(timeDifferenceMilliseconds);
return true;
}
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/complex/ComplexInlineShardingAlgorithm.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/complex/ComplexInlineShardingAlgorithm.java
index ff1d34bf570..f6454374aed 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/complex/ComplexInlineShardingAlgorithm.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/complex/ComplexInlineShardingAlgorithm.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.sharding.algorithm.sharding.complex;
-import com.google.common.base.Preconditions;
import groovy.lang.Closure;
import groovy.util.Expando;
import lombok.Getter;
@@ -26,6 +25,7 @@ import
org.apache.shardingsphere.infra.util.exception.external.sql.type.generic.
import org.apache.shardingsphere.infra.util.expr.InlineExpressionParser;
import
org.apache.shardingsphere.sharding.api.sharding.complex.ComplexKeysShardingAlgorithm;
import
org.apache.shardingsphere.sharding.api.sharding.complex.ComplexKeysShardingValue;
+import
org.apache.shardingsphere.sharding.exception.algorithm.sharding.MismatchedComplexInlineShardingAlgorithmColumnAndValueSizeException;
import
org.apache.shardingsphere.sharding.exception.algorithm.sharding.ShardingAlgorithmInitializationException;
import java.util.Arrays;
@@ -89,8 +89,8 @@ public final class ComplexInlineShardingAlgorithm implements
ComplexKeysSharding
return availableTargetNames;
}
Map<String, Collection<Comparable<?>>> columnNameAndShardingValuesMap
= shardingValue.getColumnNameAndShardingValuesMap();
- Preconditions.checkArgument(shardingColumns.isEmpty() ||
shardingColumns.size() == columnNameAndShardingValuesMap.size(),
- "Complex inline need %s sharing columns, but only found %s",
shardingColumns.size(), columnNameAndShardingValuesMap.size());
+ ShardingSpherePreconditions.checkState(shardingColumns.isEmpty() ||
shardingColumns.size() == columnNameAndShardingValuesMap.size(),
+ () -> new
MismatchedComplexInlineShardingAlgorithmColumnAndValueSizeException(shardingColumns.size(),
columnNameAndShardingValuesMap.size()));
Collection<Map<String, Comparable<?>>> combine =
combine(columnNameAndShardingValuesMap);
return
combine.stream().map(this::doSharding).collect(Collectors.toList());
}
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/mod/ModShardingAlgorithm.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/mod/ModShardingAlgorithm.java
index 8fd1633a13f..ab9b0929653 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/mod/ModShardingAlgorithm.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/mod/ModShardingAlgorithm.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.sharding.algorithm.sharding.mod;
-import com.google.common.base.Preconditions;
import lombok.Getter;
import
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
import
org.apache.shardingsphere.sharding.algorithm.sharding.ShardingAutoTableAlgorithmUtil;
@@ -26,6 +25,7 @@ import
org.apache.shardingsphere.sharding.api.sharding.standard.PreciseShardingV
import
org.apache.shardingsphere.sharding.api.sharding.standard.RangeShardingValue;
import
org.apache.shardingsphere.sharding.api.sharding.standard.StandardShardingAlgorithm;
import
org.apache.shardingsphere.sharding.exception.algorithm.sharding.ShardingAlgorithmInitializationException;
+import
org.apache.shardingsphere.sharding.exception.data.ShardingValueOffsetException;
import java.math.BigInteger;
import java.util.Collection;
@@ -136,7 +136,7 @@ public final class ModShardingAlgorithm implements
StandardShardingAlgorithm<Com
}
private BigInteger cutShardingValue(final Comparable<?> shardingValue) {
- Preconditions.checkArgument(shardingValue.toString().length() -
stopOffset > startOffset, "Sharding value subtract stop offset can not be less
than start offset.");
+
ShardingSpherePreconditions.checkState(shardingValue.toString().length() -
stopOffset > startOffset, () -> new ShardingValueOffsetException(shardingValue,
startOffset, stopOffset));
return 0 == startOffset && 0 == stopOffset ?
getBigInteger(shardingValue) : new
BigInteger(shardingValue.toString().substring(startOffset,
shardingValue.toString().length() - stopOffset));
}
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/range/BoundaryBasedRangeShardingAlgorithm.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/range/BoundaryBasedRangeShardingAlgorithm.java
index b41831681ad..3d3409c6e26 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/range/BoundaryBasedRangeShardingAlgorithm.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/range/BoundaryBasedRangeShardingAlgorithm.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.sharding.algorithm.sharding.range;
-import com.google.common.base.Preconditions;
import com.google.common.base.Splitter;
import com.google.common.collect.Range;
import com.google.common.primitives.Longs;
@@ -43,7 +42,7 @@ public final class BoundaryBasedRangeShardingAlgorithm
extends AbstractRangeShar
ShardingSpherePreconditions.checkState(props.containsKey(SHARDING_RANGES_KEY),
() -> new ShardingAlgorithmInitializationException(getType(), "Sharding ranges
cannot be null."));
List<Long> partitionRanges =
Splitter.on(",").trimResults().splitToList(props.getProperty(SHARDING_RANGES_KEY))
.stream().map(Longs::tryParse).filter(Objects::nonNull).sorted().collect(Collectors.toList());
- Preconditions.checkArgument(!partitionRanges.isEmpty(), "Sharding
ranges is not valid.");
+ ShardingSpherePreconditions.checkState(!partitionRanges.isEmpty(), ()
-> new ShardingAlgorithmInitializationException(getType(), "Sharding ranges can
not be empty."));
Map<Integer, Range<Comparable<?>>> result = new
HashMap<>(partitionRanges.size() + 1, 1);
for (int i = 0; i < partitionRanges.size(); i++) {
Long rangeValue = partitionRanges.get(i);
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/checker/ShardingRuleConfigurationChecker.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/checker/ShardingRuleConfigurationChecker.java
index 1c169caf38f..fddb18f168d 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/checker/ShardingRuleConfigurationChecker.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/checker/ShardingRuleConfigurationChecker.java
@@ -27,11 +27,12 @@ import
org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleC
import
org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
import
org.apache.shardingsphere.sharding.api.config.strategy.audit.ShardingAuditStrategyConfiguration;
import
org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
+import
org.apache.shardingsphere.sharding.api.config.strategy.sharding.ComplexShardingStrategyConfiguration;
import
org.apache.shardingsphere.sharding.api.config.strategy.sharding.NoneShardingStrategyConfiguration;
import
org.apache.shardingsphere.sharding.api.config.strategy.sharding.ShardingStrategyConfiguration;
import org.apache.shardingsphere.sharding.constant.ShardingOrder;
-import
org.apache.shardingsphere.sharding.exception.metadata.MissingRequiredShardingAlgorithmException;
-import
org.apache.shardingsphere.sharding.exception.metadata.MissingRequiredShardingConfigurationException;
+import
org.apache.shardingsphere.sharding.exception.metadata.MissingRequiredAlgorithmException;
+import
org.apache.shardingsphere.sharding.exception.metadata.MissingRequiredConfigurationException;
import javax.sql.DataSource;
import java.util.Collection;
@@ -72,15 +73,16 @@ public final class ShardingRuleConfigurationChecker
implements RuleConfiguration
}
private void checkLogicTable(final String databaseName, final String
logicTable) {
-
ShardingSpherePreconditions.checkState(!Strings.isNullOrEmpty(logicTable), ()
-> new MissingRequiredShardingConfigurationException("logicTable",
databaseName));
+
ShardingSpherePreconditions.checkState(!Strings.isNullOrEmpty(logicTable), ()
-> new MissingRequiredConfigurationException("Sharding logic table",
databaseName));
}
private void checkKeyGenerateStrategy(final String databaseName, final
KeyGenerateStrategyConfiguration keyGenerateStrategy, final Collection<String>
keyGenerators) {
if (null == keyGenerateStrategy) {
return;
}
+
ShardingSpherePreconditions.checkState(!Strings.isNullOrEmpty(keyGenerateStrategy.getColumn()),
() -> new MissingRequiredConfigurationException("Key generate column",
databaseName));
ShardingSpherePreconditions.checkState(keyGenerators.contains(keyGenerateStrategy.getKeyGeneratorName()),
- () -> new
MissingRequiredShardingAlgorithmException(keyGenerateStrategy.getKeyGeneratorName(),
databaseName));
+ () -> new
MissingRequiredAlgorithmException(keyGenerateStrategy.getKeyGeneratorName(),
databaseName));
}
private void checkAuditStrategy(final String databaseName, final
ShardingAuditStrategyConfiguration auditStrategy, final Collection<String>
auditors) {
@@ -88,15 +90,20 @@ public final class ShardingRuleConfigurationChecker
implements RuleConfiguration
return;
}
ShardingSpherePreconditions.checkState(auditors.containsAll(auditStrategy.getAuditorNames()),
- () -> new
MissingRequiredShardingAlgorithmException(Joiner.on(",").join(auditStrategy.getAuditorNames()),
databaseName));
+ () -> new
MissingRequiredAlgorithmException(Joiner.on(",").join(auditStrategy.getAuditorNames()),
databaseName));
}
private void checkShardingStrategy(final String databaseName, final
ShardingStrategyConfiguration shardingStrategy, final Collection<String>
shardingAlgorithms) {
if (null == shardingStrategy || shardingStrategy instanceof
NoneShardingStrategyConfiguration) {
return;
}
+ if (shardingStrategy instanceof ComplexShardingStrategyConfiguration) {
+
ShardingSpherePreconditions.checkState(!Strings.isNullOrEmpty(((ComplexShardingStrategyConfiguration)
shardingStrategy).getShardingColumns()),
+ () -> new MissingRequiredConfigurationException("Complex
sharding columns", databaseName));
+ }
+
ShardingSpherePreconditions.checkNotNull(shardingStrategy.getShardingAlgorithmName(),
() -> new MissingRequiredConfigurationException("Sharding algorithm name",
databaseName));
ShardingSpherePreconditions.checkState(shardingAlgorithms.contains(shardingStrategy.getShardingAlgorithmName()),
- () -> new
MissingRequiredShardingAlgorithmException(shardingStrategy.getShardingAlgorithmName(),
databaseName));
+ () -> new
MissingRequiredAlgorithmException(shardingStrategy.getShardingAlgorithmName(),
databaseName));
}
@Override
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredShardingConfigurationException.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/algorithm/keygen/SnowflakeClockMoveBackException.java
similarity index 64%
copy from
features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredShardingConfigurationException.java
copy to
features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/algorithm/keygen/SnowflakeClockMoveBackException.java
index f63c80a83be..6580470afdc 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredShardingConfigurationException.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/algorithm/keygen/SnowflakeClockMoveBackException.java
@@ -15,19 +15,19 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sharding.exception.metadata;
+package org.apache.shardingsphere.sharding.exception.algorithm.keygen;
import
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
import org.apache.shardingsphere.sharding.exception.ShardingSQLException;
/**
- * Missing required sharding configuration exception.
+ * Snowflake clock move back exception.
*/
-public final class MissingRequiredShardingConfigurationException extends
ShardingSQLException {
+public final class SnowflakeClockMoveBackException extends
ShardingSQLException {
- private static final long serialVersionUID = -7307832800220432407L;
+ private static final long serialVersionUID = -2435731376659956566L;
- public MissingRequiredShardingConfigurationException(final String
configKey, final String databaseName) {
- super(XOpenSQLState.CHECK_OPTION_VIOLATION, 11, "`%s` sharding
configuration does not exist in database `%s`.", configKey, databaseName);
+ public SnowflakeClockMoveBackException(final long lastMilliseconds, final
long currentMilliseconds) {
+ super(XOpenSQLState.GENERAL_ERROR, 92, "Clock is moving backwards,
last time is %d milliseconds, current time is %d milliseconds.",
lastMilliseconds, currentMilliseconds);
}
}
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredShardingConfigurationException.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/algorithm/sharding/MismatchedComplexInlineShardingAlgorithmColumnAndValueSizeException.java
similarity index 60%
copy from
features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredShardingConfigurationException.java
copy to
features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/algorithm/sharding/MismatchedComplexInlineShardingAlgorithmColumnAndValueSizeException.java
index f63c80a83be..c2e4f3f16b1 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredShardingConfigurationException.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/algorithm/sharding/MismatchedComplexInlineShardingAlgorithmColumnAndValueSizeException.java
@@ -15,19 +15,19 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sharding.exception.metadata;
+package org.apache.shardingsphere.sharding.exception.algorithm.sharding;
import
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
import org.apache.shardingsphere.sharding.exception.ShardingSQLException;
/**
- * Missing required sharding configuration exception.
+ * Mismatched complex inline sharding algorithm's column and value exception.
*/
-public final class MissingRequiredShardingConfigurationException extends
ShardingSQLException {
+public final class
MismatchedComplexInlineShardingAlgorithmColumnAndValueSizeException extends
ShardingSQLException {
- private static final long serialVersionUID = -7307832800220432407L;
+ private static final long serialVersionUID = -3667110081810167498L;
- public MissingRequiredShardingConfigurationException(final String
configKey, final String databaseName) {
- super(XOpenSQLState.CHECK_OPTION_VIOLATION, 11, "`%s` sharding
configuration does not exist in database `%s`.", configKey, databaseName);
+ public
MismatchedComplexInlineShardingAlgorithmColumnAndValueSizeException(final int
shardingColumnSize, final int shardingValueSize) {
+ super(XOpenSQLState.CHECK_OPTION_VIOLATION, 84, "Complex inline
algorithm need %d sharing columns, but only found %d.", shardingColumnSize,
shardingValueSize);
}
}
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredShardingConfigurationException.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/data/ShardingValueOffsetException.java
similarity index 64%
copy from
features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredShardingConfigurationException.java
copy to
features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/data/ShardingValueOffsetException.java
index f63c80a83be..3416315b5cc 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredShardingConfigurationException.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/data/ShardingValueOffsetException.java
@@ -15,19 +15,19 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sharding.exception.metadata;
+package org.apache.shardingsphere.sharding.exception.data;
import
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpenSQLState;
import org.apache.shardingsphere.sharding.exception.ShardingSQLException;
/**
- * Missing required sharding configuration exception.
+ * Sharding value offset exception.
*/
-public final class MissingRequiredShardingConfigurationException extends
ShardingSQLException {
+public final class ShardingValueOffsetException extends ShardingSQLException {
- private static final long serialVersionUID = -7307832800220432407L;
+ private static final long serialVersionUID = 734610922729978886L;
- public MissingRequiredShardingConfigurationException(final String
configKey, final String databaseName) {
- super(XOpenSQLState.CHECK_OPTION_VIOLATION, 11, "`%s` sharding
configuration does not exist in database `%s`.", configKey, databaseName);
+ public ShardingValueOffsetException(final Comparable<?> shardingValue,
final int startOffset, final int stopOffset) {
+ super(XOpenSQLState.CHECK_OPTION_VIOLATION, 23, "Sharding value %s
subtract stop offset %d can not be less than start offset %d.", shardingValue,
startOffset, stopOffset);
}
}
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredShardingAlgorithmException.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredAlgorithmException.java
similarity index 73%
rename from
features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredShardingAlgorithmException.java
rename to
features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredAlgorithmException.java
index e5c358b513a..60966120db4 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredShardingAlgorithmException.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredAlgorithmException.java
@@ -21,13 +21,13 @@ import
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpe
import org.apache.shardingsphere.sharding.exception.ShardingSQLException;
/**
- * Missing required sharding algorithm exception.
+ * Missing required algorithm exception.
*/
-public final class MissingRequiredShardingAlgorithmException extends
ShardingSQLException {
+public final class MissingRequiredAlgorithmException extends
ShardingSQLException {
private static final long serialVersionUID = -1844741171173351747L;
- public MissingRequiredShardingAlgorithmException(final String
algorithmName, final String databaseName) {
- super(XOpenSQLState.CHECK_OPTION_VIOLATION, 10, "`%s` sharding
algorithm does not exist in database `%s`.", algorithmName, databaseName);
+ public MissingRequiredAlgorithmException(final String algorithmName, final
String databaseName) {
+ super(XOpenSQLState.CHECK_OPTION_VIOLATION, 10, "`%s` algorithm does
not exist in database `%s`.", algorithmName, databaseName);
}
}
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredShardingConfigurationException.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredConfigurationException.java
similarity index 73%
rename from
features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredShardingConfigurationException.java
rename to
features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredConfigurationException.java
index f63c80a83be..b6bd1ad9499 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredShardingConfigurationException.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/exception/metadata/MissingRequiredConfigurationException.java
@@ -21,13 +21,13 @@ import
org.apache.shardingsphere.infra.util.exception.external.sql.sqlstate.XOpe
import org.apache.shardingsphere.sharding.exception.ShardingSQLException;
/**
- * Missing required sharding configuration exception.
+ * Missing required configuration exception.
*/
-public final class MissingRequiredShardingConfigurationException extends
ShardingSQLException {
+public final class MissingRequiredConfigurationException extends
ShardingSQLException {
private static final long serialVersionUID = -7307832800220432407L;
- public MissingRequiredShardingConfigurationException(final String
configKey, final String databaseName) {
- super(XOpenSQLState.CHECK_OPTION_VIOLATION, 11, "`%s` sharding
configuration does not exist in database `%s`.", configKey, databaseName);
+ public MissingRequiredConfigurationException(final String configKey, final
String databaseName) {
+ super(XOpenSQLState.CHECK_OPTION_VIOLATION, 11, "`%s` configuration
does not exist in database `%s`.", configKey, databaseName);
}
}
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/algorithm/keygen/SnowflakeKeyGenerateAlgorithmTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/algorithm/keygen/SnowflakeKeyGenerateAlgorithmTest.java
index cdbf073d410..f373da62162 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/algorithm/keygen/SnowflakeKeyGenerateAlgorithmTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/algorithm/keygen/SnowflakeKeyGenerateAlgorithmTest.java
@@ -31,6 +31,7 @@ import
org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
import
org.apache.shardingsphere.sharding.algorithm.keygen.fixture.FixedTimeService;
import
org.apache.shardingsphere.sharding.algorithm.keygen.fixture.WorkerIdGeneratorFixture;
import
org.apache.shardingsphere.sharding.exception.algorithm.keygen.KeyGenerateAlgorithmInitializationException;
+import
org.apache.shardingsphere.sharding.exception.algorithm.keygen.SnowflakeClockMoveBackException;
import org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm;
import org.apache.shardingsphere.test.util.PropertiesBuilder;
import org.apache.shardingsphere.test.util.PropertiesBuilder.Property;
@@ -155,7 +156,7 @@ public final class SnowflakeKeyGenerateAlgorithmTest {
assertThat(actual, is(expected));
}
- @Test(expected = IllegalStateException.class)
+ @Test(expected = SnowflakeClockMoveBackException.class)
public void assertGenerateKeyWithClockCallBackBeyondTolerateTime() {
TimeService timeService = new FixedTimeService(1);
SnowflakeKeyGenerateAlgorithm.setTimeService(timeService);
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/ShardingRuleConfigurationCheckerTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/ShardingRuleConfigurationCheckerTest.java
index 2d08388c8f7..a63d6f361f9 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/ShardingRuleConfigurationCheckerTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/ShardingRuleConfigurationCheckerTest.java
@@ -26,7 +26,7 @@ import
org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfi
import
org.apache.shardingsphere.sharding.api.config.strategy.audit.ShardingAuditStrategyConfiguration;
import
org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
import
org.apache.shardingsphere.sharding.api.config.strategy.sharding.ShardingStrategyConfiguration;
-import
org.apache.shardingsphere.sharding.exception.metadata.MissingRequiredShardingAlgorithmException;
+import
org.apache.shardingsphere.sharding.exception.metadata.MissingRequiredConfigurationException;
import org.junit.Test;
import java.util.Collections;
@@ -50,7 +50,7 @@ public final class ShardingRuleConfigurationCheckerTest {
}
@SuppressWarnings("unchecked")
- @Test(expected = MissingRequiredShardingAlgorithmException.class)
+ @Test(expected = MissingRequiredConfigurationException.class)
public void assertCheckTableConfigurationFailed() {
ShardingRuleConfiguration ruleConfig = createRuleConfiguration();
ruleConfig.setTables(Collections.singletonList(createShardingTableRuleConfiguration(null,
null, null)));
diff --git
a/features/sharding/plugin/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdSnowflakeKeyGenerateAlgorithm.java
b/features/sharding/plugin/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdSnowflakeKeyGenerateAlgorithm.java
index 75768dc2c11..d67061e9282 100644
---
a/features/sharding/plugin/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdSnowflakeKeyGenerateAlgorithm.java
+++
b/features/sharding/plugin/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdSnowflakeKeyGenerateAlgorithm.java
@@ -17,16 +17,17 @@
package org.apache.shardingsphere.sharding.cosid.algorithm.keygen;
-import com.google.common.base.Preconditions;
import lombok.Getter;
import me.ahoo.cosid.converter.Radix62IdConverter;
import me.ahoo.cosid.snowflake.ClockSyncSnowflakeId;
import me.ahoo.cosid.snowflake.MillisecondSnowflakeId;
import me.ahoo.cosid.snowflake.SnowflakeId;
import me.ahoo.cosid.snowflake.StringSnowflakeId;
-import org.apache.shardingsphere.infra.instance.InstanceContextAware;
import org.apache.shardingsphere.infra.instance.InstanceContext;
+import org.apache.shardingsphere.infra.instance.InstanceContextAware;
+import
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
import
org.apache.shardingsphere.sharding.cosid.algorithm.CosIdAlgorithmConstants;
+import org.apache.shardingsphere.sharding.exception.ShardingPluginException;
import org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm;
import java.util.Calendar;
@@ -94,7 +95,7 @@ public final class CosIdSnowflakeKeyGenerateAlgorithm
implements KeyGenerateAlgo
}
private SnowflakeId getSnowflakeId() {
- Preconditions.checkNotNull(snowflakeId, "Instance context not set
yet.");
+ ShardingSpherePreconditions.checkNotNull(snowflakeId, () -> new
ShardingPluginException("Instance context not set yet."));
return snowflakeId;
}
diff --git
a/features/sharding/plugin/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/interval/AbstractCosIdIntervalShardingAlgorithm.java
b/features/sharding/plugin/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/interval/AbstractCosIdIntervalShardingAlgorithm.java
index 4ab4d8b5e42..4e476accf4f 100644
---
a/features/sharding/plugin/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/interval/AbstractCosIdIntervalShardingAlgorithm.java
+++
b/features/sharding/plugin/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/interval/AbstractCosIdIntervalShardingAlgorithm.java
@@ -17,17 +17,18 @@
package org.apache.shardingsphere.sharding.cosid.algorithm.sharding.interval;
-import com.google.common.base.Preconditions;
import com.google.common.collect.BoundType;
import com.google.common.collect.Range;
import lombok.AccessLevel;
import lombok.Getter;
import me.ahoo.cosid.sharding.IntervalStep;
import me.ahoo.cosid.sharding.IntervalTimeline;
+import
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
import
org.apache.shardingsphere.sharding.api.sharding.standard.PreciseShardingValue;
import
org.apache.shardingsphere.sharding.api.sharding.standard.RangeShardingValue;
import
org.apache.shardingsphere.sharding.api.sharding.standard.StandardShardingAlgorithm;
import
org.apache.shardingsphere.sharding.cosid.algorithm.CosIdAlgorithmConstants;
+import org.apache.shardingsphere.sharding.exception.ShardingPluginException;
import java.time.LocalDateTime;
import java.time.ZoneId;
@@ -87,7 +88,7 @@ public abstract class
AbstractCosIdIntervalShardingAlgorithm<T extends Comparabl
}
private String getRequiredValue(final Properties props, final String key) {
- Preconditions.checkArgument(props.containsKey(key), "%s can not be
null.", key);
+ ShardingSpherePreconditions.checkState(props.containsKey(key), () ->
new ShardingPluginException("%s can not be null.", key));
return props.getProperty(key);
}
diff --git
a/features/sharding/plugin/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/mod/CosIdModShardingAlgorithm.java
b/features/sharding/plugin/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/mod/CosIdModShardingAlgorithm.java
index f56c176f195..d7324119be1 100644
---
a/features/sharding/plugin/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/mod/CosIdModShardingAlgorithm.java
+++
b/features/sharding/plugin/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/mod/CosIdModShardingAlgorithm.java
@@ -17,13 +17,14 @@
package org.apache.shardingsphere.sharding.cosid.algorithm.sharding.mod;
-import com.google.common.base.Preconditions;
import lombok.Getter;
import me.ahoo.cosid.sharding.ModCycle;
+import
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
import
org.apache.shardingsphere.sharding.api.sharding.standard.PreciseShardingValue;
import
org.apache.shardingsphere.sharding.api.sharding.standard.RangeShardingValue;
import
org.apache.shardingsphere.sharding.api.sharding.standard.StandardShardingAlgorithm;
import
org.apache.shardingsphere.sharding.cosid.algorithm.CosIdAlgorithmConstants;
+import org.apache.shardingsphere.sharding.exception.ShardingPluginException;
import java.util.Collection;
import java.util.Properties;
@@ -50,7 +51,7 @@ public final class CosIdModShardingAlgorithm<T extends Number
& Comparable<T>> i
}
private String getRequiredValue(final Properties props, final String key) {
- Preconditions.checkArgument(props.containsKey(key), "%s can not be
null.", key);
+ ShardingSpherePreconditions.checkState(props.containsKey(key), () ->
new ShardingPluginException("%s can not be null.", key));
return props.getProperty(key);
}
diff --git
a/features/sharding/plugin/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdSnowflakeKeyGenerateAlgorithmTest.java
b/features/sharding/plugin/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdSnowflakeKeyGenerateAlgorithmTest.java
index b702ebd2e0e..e5cf1d15cae 100644
---
a/features/sharding/plugin/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdSnowflakeKeyGenerateAlgorithmTest.java
+++
b/features/sharding/plugin/cosid/src/test/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdSnowflakeKeyGenerateAlgorithmTest.java
@@ -32,6 +32,7 @@ import
org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
import org.apache.shardingsphere.infra.lock.LockContext;
import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
import
org.apache.shardingsphere.sharding.cosid.algorithm.keygen.fixture.WorkerIdGeneratorFixture;
+import org.apache.shardingsphere.sharding.exception.ShardingPluginException;
import org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm;
import org.apache.shardingsphere.test.util.PropertiesBuilder;
import org.apache.shardingsphere.test.util.PropertiesBuilder.Property;
@@ -133,7 +134,7 @@ public final class CosIdSnowflakeKeyGenerateAlgorithmTest {
assertThat(actualState.getSequence(), is(1L));
}
- @Test(expected = NullPointerException.class)
+ @Test(expected = ShardingPluginException.class)
public void assertGenerateKeyWhenNoneInstanceContext() {
((KeyGenerateAlgorithm)
ShardingSphereAlgorithmFactory.createAlgorithm(new
AlgorithmConfiguration("COSID_SNOWFLAKE", new Properties()),
KeyGenerateAlgorithm.class)).generateKey();
}