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 929b179ee09 Adjustment refresh meta data when switch active version 
(#26458)
929b179ee09 is described below

commit 929b179ee09174c5fc65ea3fdd5be0522853ffed
Author: zhaojinchao <[email protected]>
AuthorDate: Tue Jun 20 19:49:42 2023 +0800

    Adjustment refresh meta data when switch active version (#26458)
    
    * Adjustment refresh meta data when switch active version
    
    * Fix checkstyle
    
    * Fix unit test
    
    * Fix ci
    
    * Revise
---
 .../BroadcastRuleConfigurationEventBuilder.java    |  4 +-
 .../event/config/AddBroadcastTableEvent.java       |  4 +-
 .../event/config/AlterBroadcastTableEvent.java     |  4 +-
 .../event/config/DeleteBroadcastTableEvent.java    |  4 +-
 .../BroadcastConfigurationSubscriber.java          |  6 +--
 .../EncryptRuleConfigurationEventBuilder.java      |  8 ++--
 .../event/config/AddEncryptConfigurationEvent.java |  4 +-
 .../config/AlterEncryptConfigurationEvent.java     |  4 +-
 .../config/DeleteEncryptConfigurationEvent.java    |  4 +-
 .../event/encryptor/AlterEncryptorEvent.java       |  4 +-
 .../event/encryptor/DeleteEncryptorEvent.java      |  4 +-
 .../subscriber/EncryptConfigurationSubscriber.java |  6 +--
 .../encrypt/subscriber/EncryptorSubscriber.java    |  4 +-
 .../event/MaskRuleConfigurationEventBuilder.java   |  8 ++--
 .../event/algorithm/AlterMaskAlgorithmEvent.java   |  4 +-
 .../event/algorithm/DeleteMaskAlgorithmEvent.java  |  4 +-
 .../event/config/AddMaskConfigurationEvent.java    |  4 +-
 .../event/config/AlterMaskConfigurationEvent.java  |  4 +-
 .../event/config/DeleteMaskConfigurationEvent.java |  4 +-
 .../subscriber/MaskConfigurationSubscriber.java    |  6 +--
 ...riteSplittingRuleConfigurationEventBuilder.java |  8 ++--
 .../AddReadwriteSplittingConfigurationEvent.java   |  4 +-
 .../AlterReadwriteSplittingConfigurationEvent.java |  4 +-
 ...DeleteReadwriteSplittingConfigurationEvent.java |  4 +-
 .../event/loadbalance/AlterLoadBalanceEvent.java   |  4 +-
 .../event/loadbalance/DeleteLoadBalanceEvent.java  |  4 +-
 .../ReadwriteSplittingConfigurationSubscriber.java |  6 +--
 .../ReadwriteSplittingLoadBalanceSubscriber.java   |  4 +-
 .../event/ShadowRuleConfigurationEventBuilder.java | 12 +++---
 .../event/algorithm/AlterShadowAlgorithmEvent.java |  4 +-
 .../algorithm/DeleteShadowAlgorithmEvent.java      |  4 +-
 .../event/config/AddShadowConfigurationEvent.java  |  4 +-
 .../config/AlterShadowConfigurationEvent.java      |  4 +-
 .../config/DeleteShadowConfigurationEvent.java     |  4 +-
 .../shadow/event/table/AddShadowTableEvent.java    |  4 +-
 .../shadow/event/table/AlterShadowTableEvent.java  |  4 +-
 .../shadow/event/table/DeleteShadowTableEvent.java |  4 +-
 .../subscriber/ShadowConfigurationSubscriber.java  |  6 +--
 .../ShardingRuleConfigurationEventBuilder.java     | 50 +++++++++++-----------
 .../event/algorithm/auditor/AlterAuditorEvent.java |  4 +-
 .../algorithm/auditor/DeleteAuditorEvent.java      |  4 +-
 .../keygenerator/AlterKeyGeneratorEvent.java       |  4 +-
 .../keygenerator/DeleteKeyGeneratorEvent.java      |  4 +-
 .../sharding/AlterShardingAlgorithmEvent.java      |  4 +-
 .../sharding/DeleteShardingAlgorithmEvent.java     |  4 +-
 .../cache/AddShardingCacheConfigurationEvent.java  |  4 +-
 .../AlterShardingCacheConfigurationEvent.java      |  4 +-
 .../DeleteShardingCacheConfigurationEvent.java     |  4 +-
 ...dShardingAuditorStrategyConfigurationEvent.java |  4 +-
 ...rShardingAuditorStrategyConfigurationEvent.java |  4 +-
 ...eShardingAuditorStrategyConfigurationEvent.java |  4 +-
 ...DatabaseShardingStrategyConfigurationEvent.java |  4 +-
 ...DatabaseShardingStrategyConfigurationEvent.java |  4 +-
 ...DatabaseShardingStrategyConfigurationEvent.java |  4 +-
 .../AddKeyGenerateStrategyConfigurationEvent.java  |  4 +-
 ...AlterKeyGenerateStrategyConfigurationEvent.java |  4 +-
 ...eleteKeyGenerateStrategyConfigurationEvent.java |  4 +-
 .../AddDefaultShardingColumnEvent.java             |  4 +-
 .../AlterDefaultShardingColumnEvent.java           |  4 +-
 .../DeleteDefaultShardingColumnEvent.java          |  4 +-
 ...AddTableShardingStrategyConfigurationEvent.java |  4 +-
 ...terTableShardingStrategyConfigurationEvent.java |  4 +-
 ...eteTableShardingStrategyConfigurationEvent.java |  4 +-
 .../AddShardingAutoTableConfigurationEvent.java    |  4 +-
 .../AlterShardingAutoTableConfigurationEvent.java  |  4 +-
 .../DeleteShardingAutoTableConfigurationEvent.java |  4 +-
 .../AddBroadcastTableConfigurationEvent.java       |  4 +-
 .../AlterBroadcastTableConfigurationEvent.java     |  4 +-
 .../DeleteBroadcastTableConfigurationEvent.java    |  4 +-
 .../AddShardingTableConfigurationEvent.java        |  4 +-
 .../AlterShardingTableConfigurationEvent.java      |  4 +-
 .../DeleteShardingTableConfigurationEvent.java     |  4 +-
 .../ShardingTableConfigurationSubscriber.java      | 18 ++++----
 .../event/AlterGlobalRuleConfigurationEvent.java   |  4 +-
 .../event/DeleteGlobalRuleConfigurationEvent.java  |  4 +-
 .../infra/instance/mode/ModeContextManager.java    |  4 +-
 .../AuthorityRuleConfigurationEventBuilder.java    |  4 +-
 .../GlobalClockRuleConfigurationEventBuilder.java  |  4 +-
 .../LoggingRuleConfigurationEventBuilder.java      |  4 +-
 .../persist/node/NewDatabaseMetaDataNode.java      |  9 ++--
 .../persist/node/NewDatabaseMetaDataNodeTest.java  |  6 +--
 ...SQLFederationRuleConfigurationEventBuilder.java |  4 +-
 .../SQLParserRuleConfigurationEventBuilder.java    |  4 +-
 .../SQLTranslatorConfigurationEventBuilder.java    |  4 +-
 .../TrafficRuleConfigurationEventBuilder.java      |  4 +-
 .../TransactionRuleConfigurationEventBuilder.java  |  4 +-
 .../event/datasource/AlterStorageUnitEvent.java    |  4 +-
 .../event/datasource/RegisterStorageUnitEvent.java |  4 +-
 .../datasource/UnregisterStorageUnitEvent.java     |  4 +-
 .../mode/event/schema/table/AlterTableEvent.java   |  4 +-
 .../mode/event/schema/table/DropTableEvent.java    |  4 +-
 .../mode/event/schema/view/AlterViewEvent.java     |  4 +-
 .../mode/event/schema/view/DropViewEvent.java      |  4 +-
 .../cluster/NewClusterModeContextManager.java      |  7 +--
 .../watcher/NewMetaDataChangedWatcher.java         | 14 +++---
 .../subscriber/NewDataSourceChangedSubscriber.java |  6 +--
 .../NewResourceMetaDataChangedSubscriber.java      |  8 ++--
 97 files changed, 251 insertions(+), 253 deletions(-)

diff --git 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleConfigurationEventBuilder.java
 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleConfigurationEventBuilder.java
index 88ac3987f18..eeac4f5d710 100644
--- 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleConfigurationEventBuilder.java
+++ 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleConfigurationEventBuilder.java
@@ -45,13 +45,13 @@ public final class BroadcastRuleConfigurationEventBuilder 
implements RuleConfigu
         if (BroadcastNodeConverter.isTablesPath(event.getKey()) && 
!Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> tablesVersion = 
BroadcastNodeConverter.getTablesVersion(event.getKey());
             if (tablesVersion.isPresent()) {
-                return createBroadcastConfigEvent(databaseName, 
Integer.parseInt(tablesVersion.get()), event);
+                return createBroadcastConfigEvent(databaseName, 
tablesVersion.get(), event);
             }
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> createBroadcastConfigEvent(final String 
databaseName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createBroadcastConfigEvent(final String 
databaseName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new AddBroadcastTableEvent(databaseName, 
swapBroadcastTableRuleConfig(event.getValue()), event.getKey(), version));
         }
diff --git 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AddBroadcastTableEvent.java
 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AddBroadcastTableEvent.java
index ce5be3d6e81..5a701ead7a5 100644
--- 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AddBroadcastTableEvent.java
+++ 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AddBroadcastTableEvent.java
@@ -33,7 +33,7 @@ public final class AddBroadcastTableEvent implements 
GovernanceEvent {
     
     private final BroadcastRuleConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String version;
 }
diff --git 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AlterBroadcastTableEvent.java
 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AlterBroadcastTableEvent.java
index 998e9536472..a16aa8e8975 100644
--- 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AlterBroadcastTableEvent.java
+++ 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AlterBroadcastTableEvent.java
@@ -33,7 +33,7 @@ public final class AlterBroadcastTableEvent implements 
GovernanceEvent {
     
     private final BroadcastRuleConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String version;
 }
diff --git 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/DeleteBroadcastTableEvent.java
 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/DeleteBroadcastTableEvent.java
index 09132477652..1e97aca73da 100644
--- 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/DeleteBroadcastTableEvent.java
+++ 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/DeleteBroadcastTableEvent.java
@@ -30,7 +30,7 @@ public final class DeleteBroadcastTableEvent implements 
GovernanceEvent {
     
     private final String databaseName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String version;
 }
diff --git 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/subscriber/BroadcastConfigurationSubscriber.java
 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/subscriber/BroadcastConfigurationSubscriber.java
index 3180c28f8c5..caa843450e4 100644
--- 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/subscriber/BroadcastConfigurationSubscriber.java
+++ 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/subscriber/BroadcastConfigurationSubscriber.java
@@ -57,7 +57,7 @@ public final class BroadcastConfigurationSubscriber 
implements RuleConfiguration
      */
     @Subscribe
     public synchronized void renew(final AddBroadcastTableEvent event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
@@ -81,7 +81,7 @@ public final class BroadcastConfigurationSubscriber 
implements RuleConfiguration
      */
     @Subscribe
     public synchronized void renew(final AlterBroadcastTableEvent event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
@@ -99,7 +99,7 @@ public final class BroadcastConfigurationSubscriber 
implements RuleConfiguration
      */
     @Subscribe
     public synchronized void renew(final DeleteBroadcastTableEvent event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/EncryptRuleConfigurationEventBuilder.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/EncryptRuleConfigurationEventBuilder.java
index aee8ede97b2..f330ff3897b 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/EncryptRuleConfigurationEventBuilder.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/EncryptRuleConfigurationEventBuilder.java
@@ -52,20 +52,20 @@ public final class EncryptRuleConfigurationEventBuilder 
implements RuleConfigura
         if (tableName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) 
{
             Optional<String> encryptTableVersion = 
EncryptNodeConverter.getEncryptTableVersion(event.getKey());
             if (encryptTableVersion.isPresent()) {
-                return createEncryptConfigEvent(databaseName, tableName.get(), 
Integer.parseInt(encryptTableVersion.get()), event);
+                return createEncryptConfigEvent(databaseName, tableName.get(), 
encryptTableVersion.get(), event);
             }
         }
         Optional<String> encryptorName = 
EncryptNodeConverter.getEncryptorName(event.getKey());
         if (encryptorName.isPresent() && 
!Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> encryptorVersion = 
EncryptNodeConverter.getEncryptorVersion(event.getKey());
             if (encryptorVersion.isPresent()) {
-                return createEncryptorEvent(databaseName, encryptorName.get(), 
Integer.parseInt(encryptorVersion.get()), event);
+                return createEncryptorEvent(databaseName, encryptorName.get(), 
encryptorVersion.get(), event);
             }
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> createEncryptConfigEvent(final String 
databaseName, final String groupName, final int version, final DataChangedEvent 
event) {
+    private Optional<GovernanceEvent> createEncryptConfigEvent(final String 
databaseName, final String groupName, final String version, final 
DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new AddEncryptConfigurationEvent(databaseName, 
swapEncryptTableRuleConfig(event.getValue()), event.getKey(), version));
         }
@@ -79,7 +79,7 @@ public final class EncryptRuleConfigurationEventBuilder 
implements RuleConfigura
         return new 
YamlEncryptTableRuleConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlEncryptTableRuleConfiguration.class));
     }
     
-    private Optional<GovernanceEvent> createEncryptorEvent(final String 
databaseName, final String encryptorName, final int version, final 
DataChangedEvent event) {
+    private Optional<GovernanceEvent> createEncryptorEvent(final String 
databaseName, final String encryptorName, final String version, final 
DataChangedEvent event) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new AlterEncryptorEvent(databaseName, 
encryptorName, swapToAlgorithmConfig(event.getValue()), event.getKey(), 
version));
         }
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/AddEncryptConfigurationEvent.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/AddEncryptConfigurationEvent.java
index 153c4585435..295bbcb7cb4 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/AddEncryptConfigurationEvent.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/AddEncryptConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class AddEncryptConfigurationEvent implements 
GovernanceEvent {
     
     private final EncryptTableRuleConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/AlterEncryptConfigurationEvent.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/AlterEncryptConfigurationEvent.java
index 8cab6a51665..a2085ecd132 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/AlterEncryptConfigurationEvent.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/AlterEncryptConfigurationEvent.java
@@ -35,7 +35,7 @@ public final class AlterEncryptConfigurationEvent implements 
GovernanceEvent {
     
     private final EncryptTableRuleConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/DeleteEncryptConfigurationEvent.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/DeleteEncryptConfigurationEvent.java
index 58574cc8587..834a3ba1415 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/DeleteEncryptConfigurationEvent.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/config/DeleteEncryptConfigurationEvent.java
@@ -32,7 +32,7 @@ public final class DeleteEncryptConfigurationEvent implements 
GovernanceEvent {
     
     private final String tableName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/AlterEncryptorEvent.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/AlterEncryptorEvent.java
index a23891bb3b5..84cc8841ae2 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/AlterEncryptorEvent.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/AlterEncryptorEvent.java
@@ -35,7 +35,7 @@ public final class AlterEncryptorEvent implements 
GovernanceEvent {
     
     private final AlgorithmConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/DeleteEncryptorEvent.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/DeleteEncryptorEvent.java
index 9ced8866498..af6428835be 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/DeleteEncryptorEvent.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/event/encryptor/DeleteEncryptorEvent.java
@@ -32,7 +32,7 @@ public final class DeleteEncryptorEvent implements 
GovernanceEvent {
     
     private final String encryptorName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptConfigurationSubscriber.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptConfigurationSubscriber.java
index 88da97bd91c..600079a96ff 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptConfigurationSubscriber.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptConfigurationSubscriber.java
@@ -59,7 +59,7 @@ public final class EncryptConfigurationSubscriber implements 
RuleConfigurationSu
      */
     @Subscribe
     public synchronized void renew(final AddEncryptConfigurationEvent event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
@@ -82,7 +82,7 @@ public final class EncryptConfigurationSubscriber implements 
RuleConfigurationSu
      */
     @Subscribe
     public synchronized void renew(final AlterEncryptConfigurationEvent event) 
{
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
@@ -100,7 +100,7 @@ public final class EncryptConfigurationSubscriber 
implements RuleConfigurationSu
      */
     @Subscribe
     public synchronized void renew(final DeleteEncryptConfigurationEvent 
event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptorSubscriber.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptorSubscriber.java
index c4b0bf2698f..2ade171d753 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptorSubscriber.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/subscriber/EncryptorSubscriber.java
@@ -55,7 +55,7 @@ public final class EncryptorSubscriber implements 
RuleConfigurationSubscribeCoor
      */
     @Subscribe
     public synchronized void renew(final AlterEncryptorEvent event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
@@ -70,7 +70,7 @@ public final class EncryptorSubscriber implements 
RuleConfigurationSubscribeCoor
      */
     @Subscribe
     public synchronized void renew(final DeleteEncryptorEvent event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
diff --git 
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/MaskRuleConfigurationEventBuilder.java
 
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/MaskRuleConfigurationEventBuilder.java
index 7206bc693ad..8935941a895 100644
--- 
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/MaskRuleConfigurationEventBuilder.java
+++ 
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/MaskRuleConfigurationEventBuilder.java
@@ -52,20 +52,20 @@ public final class MaskRuleConfigurationEventBuilder 
implements RuleConfiguratio
         if (tableName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) 
{
             Optional<String> version = 
MaskNodeConverter.getMaskTableVersion(event.getKey());
             if (version.isPresent()) {
-                return createMaskConfigEvent(databaseName, tableName.get(), 
Integer.parseInt(version.get()), event);
+                return createMaskConfigEvent(databaseName, tableName.get(), 
version.get(), event);
             }
         }
         Optional<String> algorithmName = 
MaskNodeConverter.getAlgorithmName(event.getKey());
         if (algorithmName.isPresent() && 
!Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> algorithmVersion = 
MaskNodeConverter.getMaskAlgorithmVersion(event.getKey());
             if (algorithmVersion.isPresent()) {
-                return createMaskAlgorithmEvent(databaseName, 
algorithmName.get(), Integer.parseInt(algorithmVersion.get()), event);
+                return createMaskAlgorithmEvent(databaseName, 
algorithmName.get(), algorithmVersion.get(), event);
             }
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> createMaskConfigEvent(final String 
databaseName, final String tableName, final int version, final DataChangedEvent 
event) {
+    private Optional<GovernanceEvent> createMaskConfigEvent(final String 
databaseName, final String tableName, final String version, final 
DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new AddMaskConfigurationEvent(databaseName, 
swapMaskTableRuleConfig(event.getValue()), event.getKey(), version));
         }
@@ -79,7 +79,7 @@ public final class MaskRuleConfigurationEventBuilder 
implements RuleConfiguratio
         return new 
YamlMaskTableRuleConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlMaskTableRuleConfiguration.class));
     }
     
-    private Optional<GovernanceEvent> createMaskAlgorithmEvent(final String 
databaseName, final String algorithmName, final int version, final 
DataChangedEvent event) {
+    private Optional<GovernanceEvent> createMaskAlgorithmEvent(final String 
databaseName, final String algorithmName, final String version, final 
DataChangedEvent event) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new AlterMaskAlgorithmEvent(databaseName, 
algorithmName, swapToAlgorithmConfig(event.getValue()), event.getKey(), 
version));
         }
diff --git 
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/AlterMaskAlgorithmEvent.java
 
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/AlterMaskAlgorithmEvent.java
index b3a9edc7cd6..3b28cbc7529 100644
--- 
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/AlterMaskAlgorithmEvent.java
+++ 
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/AlterMaskAlgorithmEvent.java
@@ -35,7 +35,7 @@ public final class AlterMaskAlgorithmEvent implements 
GovernanceEvent {
     
     private final AlgorithmConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/DeleteMaskAlgorithmEvent.java
 
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/DeleteMaskAlgorithmEvent.java
index 1aebedbbdbf..f2c425dad79 100644
--- 
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/DeleteMaskAlgorithmEvent.java
+++ 
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/DeleteMaskAlgorithmEvent.java
@@ -32,7 +32,7 @@ public final class DeleteMaskAlgorithmEvent implements 
GovernanceEvent {
     
     private final String algorithmName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AddMaskConfigurationEvent.java
 
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AddMaskConfigurationEvent.java
index 6c891575c71..647f7568384 100644
--- 
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AddMaskConfigurationEvent.java
+++ 
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AddMaskConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class AddMaskConfigurationEvent implements 
GovernanceEvent {
     
     private final MaskTableRuleConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AlterMaskConfigurationEvent.java
 
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AlterMaskConfigurationEvent.java
index 4600e76c7f2..2e16f8f87b9 100644
--- 
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AlterMaskConfigurationEvent.java
+++ 
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AlterMaskConfigurationEvent.java
@@ -35,7 +35,7 @@ public final class AlterMaskConfigurationEvent implements 
GovernanceEvent {
     
     private final MaskTableRuleConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/DeleteMaskConfigurationEvent.java
 
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/DeleteMaskConfigurationEvent.java
index 7302194d2fa..8f2ffcf6f37 100644
--- 
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/DeleteMaskConfigurationEvent.java
+++ 
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/DeleteMaskConfigurationEvent.java
@@ -32,7 +32,7 @@ public final class DeleteMaskConfigurationEvent implements 
GovernanceEvent {
     
     private final String tableName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskConfigurationSubscriber.java
 
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskConfigurationSubscriber.java
index 4cd32d4ef0d..c34d5906793 100644
--- 
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskConfigurationSubscriber.java
+++ 
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskConfigurationSubscriber.java
@@ -59,7 +59,7 @@ public final class MaskConfigurationSubscriber implements 
RuleConfigurationSubsc
      */
     @Subscribe
     public synchronized void renew(final AddMaskConfigurationEvent event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
@@ -83,7 +83,7 @@ public final class MaskConfigurationSubscriber implements 
RuleConfigurationSubsc
      */
     @Subscribe
     public synchronized void renew(final AlterMaskConfigurationEvent event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
@@ -101,7 +101,7 @@ public final class MaskConfigurationSubscriber implements 
RuleConfigurationSubsc
      */
     @Subscribe
     public synchronized void renew(final DeleteMaskConfigurationEvent event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleConfigurationEventBuilder.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleConfigurationEventBuilder.java
index bd728bbb2aa..c3435ee8e0e 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleConfigurationEventBuilder.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleConfigurationEventBuilder.java
@@ -51,17 +51,17 @@ public final class 
ReadwriteSplittingRuleConfigurationEventBuilder implements Ru
         if (ReadwriteSplittingNodeConverter.isDataSourcePath(event.getKey())) {
             Optional<String> groupNameVersion = 
ReadwriteSplittingNodeConverter.getGroupNameVersion(event.getKey());
             if (groupNameVersion.isPresent() && 
!Strings.isNullOrEmpty(event.getValue())) {
-                return createReadwriteSplittingConfigEvent(databaseName, 
Integer.parseInt(groupNameVersion.get()), event);
+                return createReadwriteSplittingConfigEvent(databaseName, 
groupNameVersion.get(), event);
             }
         }
         Optional<String> loadBalancerNameVersion = 
ReadwriteSplittingNodeConverter.getLoadBalancerNameVersion(event.getKey());
         if (loadBalancerNameVersion.isPresent() && 
!Strings.isNullOrEmpty(event.getValue())) {
-            return createLoadBalanceEvent(databaseName, 
Integer.parseInt(loadBalancerNameVersion.get()), event);
+            return createLoadBalanceEvent(databaseName, 
loadBalancerNameVersion.get(), event);
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> 
createReadwriteSplittingConfigEvent(final String databaseName, final int 
version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> 
createReadwriteSplittingConfigEvent(final String databaseName, final String 
version, final DataChangedEvent event) {
         String groupName = 
ReadwriteSplittingNodeConverter.getGroupName(event.getKey()).orElse("");
         if (Type.ADDED == event.getType()) {
             return Optional.of(new 
AddReadwriteSplittingConfigurationEvent(databaseName, swapDataSource(groupName, 
event.getValue()), event.getKey(), version));
@@ -84,7 +84,7 @@ public final class 
ReadwriteSplittingRuleConfigurationEventBuilder implements Ru
                 : 
TransactionalReadQueryStrategy.valueOf(yamlDataSourceRuleConfig.getTransactionalReadQueryStrategy());
     }
     
-    private Optional<GovernanceEvent> createLoadBalanceEvent(final String 
databaseName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createLoadBalanceEvent(final String 
databaseName, final String version, final DataChangedEvent event) {
         String loadBalanceName = 
ReadwriteSplittingNodeConverter.getLoadBalancerName(event.getKey()).orElse("");
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new AlterLoadBalanceEvent(databaseName, 
loadBalanceName, swapToAlgorithmConfig(event.getValue()), event.getKey(), 
version));
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AddReadwriteSplittingConfigurationEvent.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AddReadwriteSplittingConfigurationEvent.java
index 6affb7bf400..e5a717f0508 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AddReadwriteSplittingConfigurationEvent.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AddReadwriteSplittingConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class AddReadwriteSplittingConfigurationEvent 
implements Governance
     
     private final ReadwriteSplittingDataSourceRuleConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AlterReadwriteSplittingConfigurationEvent.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AlterReadwriteSplittingConfigurationEvent.java
index e17987c4320..0bd0d423196 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AlterReadwriteSplittingConfigurationEvent.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AlterReadwriteSplittingConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class AlterReadwriteSplittingConfigurationEvent 
implements Governan
     
     private final ReadwriteSplittingDataSourceRuleConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/DeleteReadwriteSplittingConfigurationEvent.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/DeleteReadwriteSplittingConfigurationEvent.java
index 2c5ec048a05..0b74264c768 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/DeleteReadwriteSplittingConfigurationEvent.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/DeleteReadwriteSplittingConfigurationEvent.java
@@ -32,7 +32,7 @@ public final class DeleteReadwriteSplittingConfigurationEvent 
implements Governa
     
     private final String groupName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
index 32546b28d31..719cd2a80eb 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/AlterLoadBalanceEvent.java
@@ -35,7 +35,7 @@ public final class AlterLoadBalanceEvent implements 
GovernanceEvent {
     
     private final AlgorithmConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/DeleteLoadBalanceEvent.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/DeleteLoadBalanceEvent.java
index 782844e0938..6dcf83a6232 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/DeleteLoadBalanceEvent.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/DeleteLoadBalanceEvent.java
@@ -32,7 +32,7 @@ public final class DeleteLoadBalanceEvent implements 
GovernanceEvent {
     
     private final String loadBalanceName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingConfigurationSubscriber.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingConfigurationSubscriber.java
index 7332bd77806..1522de32f36 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingConfigurationSubscriber.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingConfigurationSubscriber.java
@@ -59,7 +59,7 @@ public final class ReadwriteSplittingConfigurationSubscriber 
implements RuleConf
      */
     @Subscribe
     public synchronized void renew(final 
AddReadwriteSplittingConfigurationEvent event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
@@ -82,7 +82,7 @@ public final class ReadwriteSplittingConfigurationSubscriber 
implements RuleConf
      */
     @Subscribe
     public synchronized void renew(final 
AlterReadwriteSplittingConfigurationEvent event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
@@ -100,7 +100,7 @@ public final class 
ReadwriteSplittingConfigurationSubscriber implements RuleConf
      */
     @Subscribe
     public synchronized void renew(final 
DeleteReadwriteSplittingConfigurationEvent event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingLoadBalanceSubscriber.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingLoadBalanceSubscriber.java
index 274d470068c..83547e663f2 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingLoadBalanceSubscriber.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingLoadBalanceSubscriber.java
@@ -55,7 +55,7 @@ public final class ReadwriteSplittingLoadBalanceSubscriber 
implements RuleConfig
      */
     @Subscribe
     public synchronized void renew(final AlterLoadBalanceEvent event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
@@ -70,7 +70,7 @@ public final class ReadwriteSplittingLoadBalanceSubscriber 
implements RuleConfig
      */
     @Subscribe
     public synchronized void renew(final DeleteLoadBalanceEvent event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleConfigurationEventBuilder.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleConfigurationEventBuilder.java
index 935d53cf873..24640b86aea 100644
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleConfigurationEventBuilder.java
+++ 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleConfigurationEventBuilder.java
@@ -57,27 +57,27 @@ public final class ShadowRuleConfigurationEventBuilder 
implements RuleConfigurat
         if (dataSourceName.isPresent() && 
!Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> dataSourceVersion = 
ShadowNodeConverter.getDataSourceVersion(event.getKey());
             if (dataSourceVersion.isPresent()) {
-                return createShadowConfigEvent(databaseName, 
dataSourceName.get(), Integer.parseInt(dataSourceVersion.get()), event);
+                return createShadowConfigEvent(databaseName, 
dataSourceName.get(), dataSourceVersion.get(), event);
             }
         }
         Optional<String> tableName = 
ShadowNodeConverter.getTableName(event.getKey());
         if (tableName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) 
{
             Optional<String> tableVersion = 
ShadowNodeConverter.getTableVersion(event.getKey());
             if (tableVersion.isPresent()) {
-                return createShadowTableConfigEvent(databaseName, 
tableName.get(), Integer.parseInt(tableVersion.get()), event);
+                return createShadowTableConfigEvent(databaseName, 
tableName.get(), tableVersion.get(), event);
             }
         }
         Optional<String> algorithmName = 
ShadowNodeConverter.getAlgorithmName(event.getKey());
         if (algorithmName.isPresent() && 
!Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> algorithmVersion = 
ShadowNodeConverter.getAlgorithmVersion(event.getKey());
             if (algorithmVersion.isPresent()) {
-                return createShadowAlgorithmEvent(databaseName, 
algorithmName.get(), Integer.parseInt(algorithmVersion.get()), event);
+                return createShadowAlgorithmEvent(databaseName, 
algorithmName.get(), algorithmVersion.get(), event);
             }
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> createShadowConfigEvent(final String 
databaseName, final String dataSourceName, final int version, final 
DataChangedEvent event) {
+    private Optional<GovernanceEvent> createShadowConfigEvent(final String 
databaseName, final String dataSourceName, final String version, final 
DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new AddShadowConfigurationEvent(databaseName, 
swapShadowDataSourceRuleConfig(dataSourceName, event.getValue()), 
event.getKey(), version));
         }
@@ -92,7 +92,7 @@ public final class ShadowRuleConfigurationEventBuilder 
implements RuleConfigurat
         return new ShadowDataSourceConfiguration(dataSourceName, 
yamlConfig.getProductionDataSourceName(), yamlConfig.getShadowDataSourceName());
     }
     
-    private Optional<GovernanceEvent> createShadowTableConfigEvent(final 
String databaseName, final String tableName, final int version, final 
DataChangedEvent event) {
+    private Optional<GovernanceEvent> createShadowTableConfigEvent(final 
String databaseName, final String tableName, final String version, final 
DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new AddShadowTableEvent(databaseName, 
tableName, swapToTableConfig(event.getValue()), event.getKey(), version));
         }
@@ -106,7 +106,7 @@ public final class ShadowRuleConfigurationEventBuilder 
implements RuleConfigurat
         return new 
YamlShadowTableConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlShadowTableConfiguration.class));
     }
     
-    private Optional<GovernanceEvent> createShadowAlgorithmEvent(final String 
databaseName, final String algorithmName, final int version, final 
DataChangedEvent event) {
+    private Optional<GovernanceEvent> createShadowAlgorithmEvent(final String 
databaseName, final String algorithmName, final String version, final 
DataChangedEvent event) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new AlterShadowAlgorithmEvent(databaseName, 
algorithmName, swapToAlgorithmConfig(event.getValue()), event.getKey(), 
version));
         }
diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/AlterShadowAlgorithmEvent.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/AlterShadowAlgorithmEvent.java
index 685097c9e78..a26cb5d37e5 100644
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/AlterShadowAlgorithmEvent.java
+++ 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/AlterShadowAlgorithmEvent.java
@@ -35,7 +35,7 @@ public final class AlterShadowAlgorithmEvent implements 
GovernanceEvent {
     
     private final AlgorithmConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/DeleteShadowAlgorithmEvent.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/DeleteShadowAlgorithmEvent.java
index ed6c2bb9cf7..1e995d6bf2e 100644
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/DeleteShadowAlgorithmEvent.java
+++ 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/algorithm/DeleteShadowAlgorithmEvent.java
@@ -32,7 +32,7 @@ public final class DeleteShadowAlgorithmEvent implements 
GovernanceEvent {
     
     private final String algorithmName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/AddShadowConfigurationEvent.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/AddShadowConfigurationEvent.java
index 55e191f4ade..7d1998df59a 100644
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/AddShadowConfigurationEvent.java
+++ 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/AddShadowConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class AddShadowConfigurationEvent implements 
GovernanceEvent {
     
     private final ShadowDataSourceConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/AlterShadowConfigurationEvent.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/AlterShadowConfigurationEvent.java
index ea79962a159..2c93fb437e6 100644
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/AlterShadowConfigurationEvent.java
+++ 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/AlterShadowConfigurationEvent.java
@@ -35,7 +35,7 @@ public final class AlterShadowConfigurationEvent implements 
GovernanceEvent {
     
     private final ShadowDataSourceConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/DeleteShadowConfigurationEvent.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/DeleteShadowConfigurationEvent.java
index c20d9e88843..73312231953 100644
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/DeleteShadowConfigurationEvent.java
+++ 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/config/DeleteShadowConfigurationEvent.java
@@ -32,7 +32,7 @@ public final class DeleteShadowConfigurationEvent implements 
GovernanceEvent {
     
     private final String dataSourceName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/AddShadowTableEvent.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/AddShadowTableEvent.java
index 41e0472cdd3..db2dea1a69b 100644
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/AddShadowTableEvent.java
+++ 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/AddShadowTableEvent.java
@@ -35,7 +35,7 @@ public final class AddShadowTableEvent implements 
GovernanceEvent {
     
     private final ShadowTableConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/AlterShadowTableEvent.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/AlterShadowTableEvent.java
index b7ff128e4d2..cf5c2c26869 100644
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/AlterShadowTableEvent.java
+++ 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/AlterShadowTableEvent.java
@@ -35,7 +35,7 @@ public final class AlterShadowTableEvent implements 
GovernanceEvent {
     
     private final ShadowTableConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/DeleteShadowTableEvent.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/DeleteShadowTableEvent.java
index 1e992131e75..ea4772f8de0 100644
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/DeleteShadowTableEvent.java
+++ 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/table/DeleteShadowTableEvent.java
@@ -32,7 +32,7 @@ public final class DeleteShadowTableEvent implements 
GovernanceEvent {
     
     private final String tableName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/ShadowConfigurationSubscriber.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/ShadowConfigurationSubscriber.java
index c87ed38eec5..37c30c9a773 100644
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/ShadowConfigurationSubscriber.java
+++ 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/subscriber/ShadowConfigurationSubscriber.java
@@ -58,7 +58,7 @@ public final class ShadowConfigurationSubscriber implements 
RuleConfigurationSub
      */
     @Subscribe
     public synchronized void renew(final AddShadowConfigurationEvent event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
@@ -83,7 +83,7 @@ public final class ShadowConfigurationSubscriber implements 
RuleConfigurationSub
      */
     @Subscribe
     public synchronized void renew(final AlterShadowConfigurationEvent event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
@@ -101,7 +101,7 @@ public final class ShadowConfigurationSubscriber implements 
RuleConfigurationSub
      */
     @Subscribe
     public synchronized void renew(final DeleteShadowConfigurationEvent event) 
{
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/ShardingRuleConfigurationEventBuilder.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/ShardingRuleConfigurationEventBuilder.java
index e3a056fab67..7d0a74f71ea 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/ShardingRuleConfigurationEventBuilder.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/ShardingRuleConfigurationEventBuilder.java
@@ -98,84 +98,84 @@ public final class ShardingRuleConfigurationEventBuilder 
implements RuleConfigur
         if (tableName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) 
{
             Optional<String> tableNameVersion = 
ShardingNodeConverter.getTableNameVersion(event.getKey());
             if (tableNameVersion.isPresent()) {
-                return createShardingTableConfigEvent(databaseName, 
tableName.get(), Integer.parseInt(tableNameVersion.get()), event);
+                return createShardingTableConfigEvent(databaseName, 
tableName.get(), tableNameVersion.get(), event);
             }
         }
         Optional<String> autoTableName = 
ShardingNodeConverter.getAutoTableName(event.getKey());
         if (autoTableName.isPresent() && 
!Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> autoTableNameVersion = 
ShardingNodeConverter.getAutoTableNameVersion(event.getKey());
             if (autoTableNameVersion.isPresent()) {
-                return createShardingAutoTableConfigEvent(databaseName, 
autoTableName.get(), Integer.parseInt(autoTableNameVersion.get()), event);
+                return createShardingAutoTableConfigEvent(databaseName, 
autoTableName.get(), autoTableNameVersion.get(), event);
             }
         }
         Optional<String> bindingTableName = 
ShardingNodeConverter.getBindingTableName(event.getKey());
         if (bindingTableName.isPresent() && 
!Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> bingingTableNameVersion = 
ShardingNodeConverter.getBindingTableNameVersion(event.getKey());
             if (bingingTableNameVersion.isPresent()) {
-                return createShardingTableReferenceConfigEvent(databaseName, 
bindingTableName.get(), Integer.parseInt(bingingTableNameVersion.get()), event);
+                return createShardingTableReferenceConfigEvent(databaseName, 
bindingTableName.get(), bingingTableNameVersion.get(), event);
             }
         }
         if 
(ShardingNodeConverter.isDefaultDatabaseStrategyPath(event.getKey()) && 
!Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> defaultDatabaseStrategyVersion = 
ShardingNodeConverter.getDefaultDatabaseStrategyVersion(event.getKey());
             if (defaultDatabaseStrategyVersion.isPresent()) {
-                return createDefaultDatabaseStrategyConfigEvent(databaseName, 
Integer.parseInt(defaultDatabaseStrategyVersion.get()), event);
+                return createDefaultDatabaseStrategyConfigEvent(databaseName, 
defaultDatabaseStrategyVersion.get(), event);
             }
         }
         if (ShardingNodeConverter.isDefaultTableStrategyPath(event.getKey()) 
&& !Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> defaultTableStrategyVersion = 
ShardingNodeConverter.getDefaultTableStrategyVersion(event.getKey());
             if (defaultTableStrategyVersion.isPresent()) {
-                return createDefaultTableStrategyConfigEvent(databaseName, 
Integer.parseInt(defaultTableStrategyVersion.get()), event);
+                return createDefaultTableStrategyConfigEvent(databaseName, 
defaultTableStrategyVersion.get(), event);
             }
         }
         if 
(ShardingNodeConverter.isDefaultKeyGenerateStrategyPath(event.getKey()) && 
!Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> defaultKeyGenerateStrategyVersion = 
ShardingNodeConverter.getDefaultKeyGenerateStrategyVersion(event.getKey());
             if (defaultKeyGenerateStrategyVersion.isPresent()) {
-                return 
createDefaultKeyGenerateStrategyConfigEvent(databaseName, 
Integer.parseInt(defaultKeyGenerateStrategyVersion.get()), event);
+                return 
createDefaultKeyGenerateStrategyConfigEvent(databaseName, 
defaultKeyGenerateStrategyVersion.get(), event);
             }
         }
         if (ShardingNodeConverter.isDefaultAuditStrategyPath(event.getKey()) 
&& !Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> defaultAuditStrategyVersion = 
ShardingNodeConverter.getDefaultAuditStrategyVersion(event.getKey());
             if (defaultAuditStrategyVersion.isPresent()) {
-                return 
createDefaultShardingAuditorStrategyConfigEvent(databaseName, 
Integer.parseInt(defaultAuditStrategyVersion.get()), event);
+                return 
createDefaultShardingAuditorStrategyConfigEvent(databaseName, 
defaultAuditStrategyVersion.get(), event);
             }
         }
         if (ShardingNodeConverter.isDefaultShardingColumnPath(event.getKey()) 
&& !Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> defaultShardingColumnVersion = 
ShardingNodeConverter.getDefaultShardingColumnVersion(event.getKey());
             if (defaultShardingColumnVersion.isPresent()) {
-                return createDefaultShardingColumnEvent(databaseName, 
Integer.parseInt(defaultShardingColumnVersion.get()), event);
+                return createDefaultShardingColumnEvent(databaseName, 
defaultShardingColumnVersion.get(), event);
             }
         }
         Optional<String> algorithmName = 
ShardingNodeConverter.getShardingAlgorithmName(event.getKey());
         if (algorithmName.isPresent() && 
!Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> algorithmVersion = 
ShardingNodeConverter.getShardingAlgorithmVersion(event.getKey());
             if (algorithmVersion.isPresent()) {
-                return createShardingAlgorithmEvent(databaseName, 
algorithmName.get(), Integer.parseInt(algorithmVersion.get()), event);
+                return createShardingAlgorithmEvent(databaseName, 
algorithmName.get(), algorithmVersion.get(), event);
             }
         }
         Optional<String> keyGeneratorName = 
ShardingNodeConverter.getKeyGeneratorName(event.getKey());
         if (keyGeneratorName.isPresent() && 
!Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> keyGeneratorVersion = 
ShardingNodeConverter.getKeyGeneratorVersion(event.getKey());
             if (keyGeneratorVersion.isPresent()) {
-                return createKeyGeneratorEvent(databaseName, 
keyGeneratorName.get(), Integer.parseInt(keyGeneratorVersion.get()), event);
+                return createKeyGeneratorEvent(databaseName, 
keyGeneratorName.get(), keyGeneratorVersion.get(), event);
             }
         }
         Optional<String> auditorName = 
ShardingNodeConverter.getAuditorName(event.getKey());
         if (auditorName.isPresent() && 
!Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> auditorVersion = 
ShardingNodeConverter.getAuditorVersion(event.getKey());
             if (auditorVersion.isPresent()) {
-                return createAuditorEvent(databaseName, auditorName.get(), 
Integer.parseInt(auditorVersion.get()), event);
+                return createAuditorEvent(databaseName, auditorName.get(), 
auditorVersion.get(), event);
             }
         }
         if (ShardingNodeConverter.isShardingCachePath(event.getKey()) && 
!Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> shardingCacheVersion = 
ShardingNodeConverter.getShardingCacheVersion(event.getKey());
             if (shardingCacheVersion.isPresent()) {
-                return createShardingCacheEvent(databaseName, 
Integer.parseInt(shardingCacheVersion.get()), event);
+                return createShardingCacheEvent(databaseName, 
shardingCacheVersion.get(), event);
             }
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> createShardingTableConfigEvent(final 
String databaseName, final String tableName, final int version, final 
DataChangedEvent event) {
+    private Optional<GovernanceEvent> createShardingTableConfigEvent(final 
String databaseName, final String tableName, final String version, final 
DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new 
AddShardingTableConfigurationEvent<>(databaseName, 
swapShardingTableRuleConfig(event.getValue()), event.getKey(), version));
         }
@@ -189,7 +189,7 @@ public final class ShardingRuleConfigurationEventBuilder 
implements RuleConfigur
         return new 
YamlShardingTableRuleConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlTableRuleConfiguration.class));
     }
     
-    private Optional<GovernanceEvent> createShardingAutoTableConfigEvent(final 
String databaseName, final String tableName, final int version, final 
DataChangedEvent event) {
+    private Optional<GovernanceEvent> createShardingAutoTableConfigEvent(final 
String databaseName, final String tableName, final String version, final 
DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new 
AddShardingAutoTableConfigurationEvent<>(databaseName, 
swapShardingAutoTableRuleConfig(event.getValue()), event.getKey(), version));
         }
@@ -203,7 +203,7 @@ public final class ShardingRuleConfigurationEventBuilder 
implements RuleConfigur
         return new 
YamlShardingAutoTableRuleConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlShardingAutoTableRuleConfiguration.class));
     }
     
-    private Optional<GovernanceEvent> 
createShardingTableReferenceConfigEvent(final String databaseName, final String 
tableName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> 
createShardingTableReferenceConfigEvent(final String databaseName, final String 
tableName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new 
AddShardingAutoTableConfigurationEvent<>(databaseName, 
swapShardingTableReferenceRuleConfig(event.getValue()), event.getKey(), 
version));
         }
@@ -218,7 +218,7 @@ public final class ShardingRuleConfigurationEventBuilder 
implements RuleConfigur
     }
     
     @SuppressWarnings("unchecked")
-    private Optional<GovernanceEvent> createBroadcastTableConfigEvent(final 
String databaseName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createBroadcastTableConfigEvent(final 
String databaseName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new 
AddBroadcastTableConfigurationEvent(databaseName, 
YamlEngine.unmarshal(event.getValue(), Collection.class), event.getKey(), 
version));
         }
@@ -228,7 +228,7 @@ public final class ShardingRuleConfigurationEventBuilder 
implements RuleConfigur
         return Optional.of(new 
DeleteBroadcastTableConfigurationEvent(databaseName, event.getKey(), version));
     }
     
-    private Optional<GovernanceEvent> 
createDefaultDatabaseStrategyConfigEvent(final String databaseName, final int 
version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> 
createDefaultDatabaseStrategyConfigEvent(final String databaseName, final 
String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new 
AddDatabaseShardingStrategyConfigurationEvent(databaseName, 
swapShardingStrategyConfig(event.getValue()), event.getKey(), version));
         }
@@ -238,7 +238,7 @@ public final class ShardingRuleConfigurationEventBuilder 
implements RuleConfigur
         return Optional.of(new 
DeleteDatabaseShardingStrategyConfigurationEvent(databaseName, event.getKey(), 
version));
     }
     
-    private Optional<GovernanceEvent> 
createDefaultTableStrategyConfigEvent(final String databaseName, final int 
version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> 
createDefaultTableStrategyConfigEvent(final String databaseName, final String 
version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new 
AddTableShardingStrategyConfigurationEvent(databaseName, 
swapShardingStrategyConfig(event.getValue()), event.getKey(), version));
         }
@@ -252,7 +252,7 @@ public final class ShardingRuleConfigurationEventBuilder 
implements RuleConfigur
         return new 
YamlShardingStrategyConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlShardingStrategyConfiguration.class));
     }
     
-    private Optional<GovernanceEvent> 
createDefaultKeyGenerateStrategyConfigEvent(final String databaseName, final 
int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> 
createDefaultKeyGenerateStrategyConfigEvent(final String databaseName, final 
String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new 
AddKeyGenerateStrategyConfigurationEvent(databaseName, 
swapKeyGenerateStrategyConfig(event.getValue()), event.getKey(), version));
         }
@@ -266,7 +266,7 @@ public final class ShardingRuleConfigurationEventBuilder 
implements RuleConfigur
         return new 
YamlKeyGenerateStrategyConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlKeyGenerateStrategyConfiguration.class));
     }
     
-    private Optional<GovernanceEvent> 
createDefaultShardingAuditorStrategyConfigEvent(final String databaseName, 
final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> 
createDefaultShardingAuditorStrategyConfigEvent(final String databaseName, 
final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new 
AddShardingAuditorStrategyConfigurationEvent(databaseName, 
swapShardingAuditorStrategyConfig(event.getValue()), event.getKey(), version));
         }
@@ -280,7 +280,7 @@ public final class ShardingRuleConfigurationEventBuilder 
implements RuleConfigur
         return new 
YamlShardingAuditStrategyConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlShardingAuditStrategyConfiguration.class));
     }
     
-    private Optional<GovernanceEvent> createDefaultShardingColumnEvent(final 
String databaseName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createDefaultShardingColumnEvent(final 
String databaseName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new AddDefaultShardingColumnEvent(databaseName, 
event.getValue(), event.getKey(), version));
         }
@@ -290,21 +290,21 @@ public final class ShardingRuleConfigurationEventBuilder 
implements RuleConfigur
         return Optional.of(new DeleteDefaultShardingColumnEvent(databaseName, 
event.getKey(), version));
     }
     
-    private Optional<GovernanceEvent> createShardingAlgorithmEvent(final 
String databaseName, final String algorithmName, final int version, final 
DataChangedEvent event) {
+    private Optional<GovernanceEvent> createShardingAlgorithmEvent(final 
String databaseName, final String algorithmName, final String version, final 
DataChangedEvent event) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new AlterShardingAlgorithmEvent(databaseName, 
algorithmName, swapToAlgorithmConfig(event.getValue()), event.getKey(), 
version));
         }
         return Optional.of(new DeleteShardingAlgorithmEvent(databaseName, 
algorithmName, event.getKey(), version));
     }
     
-    private Optional<GovernanceEvent> createKeyGeneratorEvent(final String 
databaseName, final String algorithmName, final int version, final 
DataChangedEvent event) {
+    private Optional<GovernanceEvent> createKeyGeneratorEvent(final String 
databaseName, final String algorithmName, final String version, final 
DataChangedEvent event) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new AlterKeyGeneratorEvent(databaseName, 
algorithmName, swapToAlgorithmConfig(event.getValue()), event.getKey(), 
version));
         }
         return Optional.of(new DeleteKeyGeneratorEvent(databaseName, 
algorithmName, event.getKey(), version));
     }
     
-    private Optional<GovernanceEvent> createAuditorEvent(final String 
databaseName, final String algorithmName, final int version, final 
DataChangedEvent event) {
+    private Optional<GovernanceEvent> createAuditorEvent(final String 
databaseName, final String algorithmName, final String version, final 
DataChangedEvent event) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new AlterAuditorEvent(databaseName, 
algorithmName, swapToAlgorithmConfig(event.getValue()), event.getKey(), 
version));
         }
@@ -315,7 +315,7 @@ public final class ShardingRuleConfigurationEventBuilder 
implements RuleConfigur
         return new 
YamlAlgorithmConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext,
 YamlAlgorithmConfiguration.class));
     }
     
-    private Optional<GovernanceEvent> createShardingCacheEvent(final String 
databaseName, final int version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createShardingCacheEvent(final String 
databaseName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
             return Optional.of(new 
AddShardingCacheConfigurationEvent(databaseName, 
swapToShardingCacheConfig(event.getValue()), event.getKey(), version));
         }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/auditor/AlterAuditorEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/auditor/AlterAuditorEvent.java
index 3cec62e0bdc..2173c690901 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/auditor/AlterAuditorEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/auditor/AlterAuditorEvent.java
@@ -35,7 +35,7 @@ public final class AlterAuditorEvent implements 
GovernanceEvent {
     
     private final AlgorithmConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/auditor/DeleteAuditorEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/auditor/DeleteAuditorEvent.java
index 4af20de8d8d..736477ff9ea 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/auditor/DeleteAuditorEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/auditor/DeleteAuditorEvent.java
@@ -32,7 +32,7 @@ public final class DeleteAuditorEvent implements 
GovernanceEvent {
     
     private final String auditorName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/keygenerator/AlterKeyGeneratorEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/keygenerator/AlterKeyGeneratorEvent.java
index 3d296a4a4bd..793063bbf07 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/keygenerator/AlterKeyGeneratorEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/keygenerator/AlterKeyGeneratorEvent.java
@@ -35,7 +35,7 @@ public final class AlterKeyGeneratorEvent implements 
GovernanceEvent {
     
     private final AlgorithmConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/keygenerator/DeleteKeyGeneratorEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/keygenerator/DeleteKeyGeneratorEvent.java
index 10adf800c7e..db98d28a9cf 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/keygenerator/DeleteKeyGeneratorEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/keygenerator/DeleteKeyGeneratorEvent.java
@@ -32,7 +32,7 @@ public final class DeleteKeyGeneratorEvent implements 
GovernanceEvent {
     
     private final String keyGeneratorName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/sharding/AlterShardingAlgorithmEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/sharding/AlterShardingAlgorithmEvent.java
index 9d384e5993b..e6b93482aa2 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/sharding/AlterShardingAlgorithmEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/sharding/AlterShardingAlgorithmEvent.java
@@ -35,7 +35,7 @@ public final class AlterShardingAlgorithmEvent implements 
GovernanceEvent {
     
     private final AlgorithmConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/sharding/DeleteShardingAlgorithmEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/sharding/DeleteShardingAlgorithmEvent.java
index e514033d67d..5cde97fe823 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/sharding/DeleteShardingAlgorithmEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/algorithm/sharding/DeleteShardingAlgorithmEvent.java
@@ -32,7 +32,7 @@ public final class DeleteShardingAlgorithmEvent implements 
GovernanceEvent {
     
     private final String algorithmName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/AddShardingCacheConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/AddShardingCacheConfigurationEvent.java
index 0195fc1263a..fa67f8a8231 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/AddShardingCacheConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/AddShardingCacheConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class AddShardingCacheConfigurationEvent 
implements GovernanceEvent
     
     private final ShardingCacheConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/AlterShardingCacheConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/AlterShardingCacheConfigurationEvent.java
index c99f3e890e1..58f3ab7c735 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/AlterShardingCacheConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/AlterShardingCacheConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class AlterShardingCacheConfigurationEvent 
implements GovernanceEve
     
     private final ShardingCacheConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/DeleteShardingCacheConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/DeleteShardingCacheConfigurationEvent.java
index c3aa7931194..213fe176bd5 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/DeleteShardingCacheConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/cache/DeleteShardingCacheConfigurationEvent.java
@@ -30,7 +30,7 @@ public final class DeleteShardingCacheConfigurationEvent 
implements GovernanceEv
     
     private final String databaseName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/AddShardingAuditorStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/AddShardingAuditorStrategyConfigurationEvent.java
index 332fa8c66a4..8424b3baf0e 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/AddShardingAuditorStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/AddShardingAuditorStrategyConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class 
AddShardingAuditorStrategyConfigurationEvent implements Gover
     
     private final ShardingAuditStrategyConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/AlterShardingAuditorStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/AlterShardingAuditorStrategyConfigurationEvent.java
index 2ef6ce7318d..4b5c33756ab 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/AlterShardingAuditorStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/AlterShardingAuditorStrategyConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class 
AlterShardingAuditorStrategyConfigurationEvent implements Gov
     
     private final ShardingAuditStrategyConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/DeleteShardingAuditorStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/DeleteShardingAuditorStrategyConfigurationEvent.java
index 1f9b02def80..3011094d542 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/DeleteShardingAuditorStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/audit/DeleteShardingAuditorStrategyConfigurationEvent.java
@@ -30,7 +30,7 @@ public final class 
DeleteShardingAuditorStrategyConfigurationEvent implements Go
     
     private final String databaseName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/AddDatabaseShardingStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/AddDatabaseShardingStrategyConfigurationEvent.java
index 04e01af0f49..ae73d53d698 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/AddDatabaseShardingStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/AddDatabaseShardingStrategyConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class 
AddDatabaseShardingStrategyConfigurationEvent implements Gove
     
     private final ShardingStrategyConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/AlterDatabaseShardingStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/AlterDatabaseShardingStrategyConfigurationEvent.java
index 7733e3d24fe..d2737e06e7b 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/AlterDatabaseShardingStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/AlterDatabaseShardingStrategyConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class 
AlterDatabaseShardingStrategyConfigurationEvent implements Go
     
     private final ShardingStrategyConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/DeleteDatabaseShardingStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/DeleteDatabaseShardingStrategyConfigurationEvent.java
index d83cad340ef..9ec3d1c125d 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/DeleteDatabaseShardingStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/database/DeleteDatabaseShardingStrategyConfigurationEvent.java
@@ -30,7 +30,7 @@ public final class 
DeleteDatabaseShardingStrategyConfigurationEvent implements G
     
     private final String databaseName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/AddKeyGenerateStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/AddKeyGenerateStrategyConfigurationEvent.java
index d934edd1f5d..0b5f24122be 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/AddKeyGenerateStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/AddKeyGenerateStrategyConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class AddKeyGenerateStrategyConfigurationEvent 
implements Governanc
     
     private final KeyGenerateStrategyConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/AlterKeyGenerateStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/AlterKeyGenerateStrategyConfigurationEvent.java
index 9bd670da19e..e45737c78d1 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/AlterKeyGenerateStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/AlterKeyGenerateStrategyConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class AlterKeyGenerateStrategyConfigurationEvent 
implements Governa
     
     private final KeyGenerateStrategyConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/DeleteKeyGenerateStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/DeleteKeyGenerateStrategyConfigurationEvent.java
index 30e61a61472..af39402f41d 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/DeleteKeyGenerateStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/keygenerate/DeleteKeyGenerateStrategyConfigurationEvent.java
@@ -30,7 +30,7 @@ public final class 
DeleteKeyGenerateStrategyConfigurationEvent implements Govern
     
     private final String databaseName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/AddDefaultShardingColumnEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/AddDefaultShardingColumnEvent.java
index 7b6dc682ef1..1bcc3c35f64 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/AddDefaultShardingColumnEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/AddDefaultShardingColumnEvent.java
@@ -32,7 +32,7 @@ public final class AddDefaultShardingColumnEvent implements 
GovernanceEvent {
     
     private final String config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/AlterDefaultShardingColumnEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/AlterDefaultShardingColumnEvent.java
index 96f87c7bce1..7b4524963f8 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/AlterDefaultShardingColumnEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/AlterDefaultShardingColumnEvent.java
@@ -32,7 +32,7 @@ public final class AlterDefaultShardingColumnEvent implements 
GovernanceEvent {
     
     private final String config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/DeleteDefaultShardingColumnEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/DeleteDefaultShardingColumnEvent.java
index 8a48e126d9c..d1eeb9edf06 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/DeleteDefaultShardingColumnEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/shardingcolumn/DeleteDefaultShardingColumnEvent.java
@@ -30,7 +30,7 @@ public final class DeleteDefaultShardingColumnEvent 
implements GovernanceEvent {
     
     private final String databaseName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/AddTableShardingStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/AddTableShardingStrategyConfigurationEvent.java
index 47f74b96091..11f69ad1648 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/AddTableShardingStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/AddTableShardingStrategyConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class AddTableShardingStrategyConfigurationEvent 
implements Governa
     
     private final ShardingStrategyConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/AlterTableShardingStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/AlterTableShardingStrategyConfigurationEvent.java
index 75e511608fe..0357be66b12 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/AlterTableShardingStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/AlterTableShardingStrategyConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class 
AlterTableShardingStrategyConfigurationEvent implements Gover
     
     private final ShardingStrategyConfiguration config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/DeleteTableShardingStrategyConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/DeleteTableShardingStrategyConfigurationEvent.java
index 06edf5c322a..29439ba5ac1 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/DeleteTableShardingStrategyConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/strategy/table/DeleteTableShardingStrategyConfigurationEvent.java
@@ -30,7 +30,7 @@ public final class 
DeleteTableShardingStrategyConfigurationEvent implements Gove
     
     private final String databaseName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/AddShardingAutoTableConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/AddShardingAutoTableConfigurationEvent.java
index 5ec27146340..c72b39d97bc 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/AddShardingAutoTableConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/AddShardingAutoTableConfigurationEvent.java
@@ -34,7 +34,7 @@ public final class AddShardingAutoTableConfigurationEvent<T> 
implements Governan
     
     private final T config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/AlterShardingAutoTableConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/AlterShardingAutoTableConfigurationEvent.java
index 40296c7bf46..d4f4b6c77b4 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/AlterShardingAutoTableConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/AlterShardingAutoTableConfigurationEvent.java
@@ -36,7 +36,7 @@ public final class 
AlterShardingAutoTableConfigurationEvent<T> implements Govern
     
     private final T config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/DeleteShardingAutoTableConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/DeleteShardingAutoTableConfigurationEvent.java
index 68f8f854720..efd9cf3be81 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/DeleteShardingAutoTableConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/auto/DeleteShardingAutoTableConfigurationEvent.java
@@ -32,7 +32,7 @@ public final class DeleteShardingAutoTableConfigurationEvent 
implements Governan
     
     private final String tableName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/broadcast/AddBroadcastTableConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/broadcast/AddBroadcastTableConfigurationEvent.java
index 035f18b59a0..d2ba149500a 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/broadcast/AddBroadcastTableConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/broadcast/AddBroadcastTableConfigurationEvent.java
@@ -34,7 +34,7 @@ public final class AddBroadcastTableConfigurationEvent 
implements GovernanceEven
     
     private final Collection<String> config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/broadcast/AlterBroadcastTableConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/broadcast/AlterBroadcastTableConfigurationEvent.java
index 67e75bb3bd1..11573ecedba 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/broadcast/AlterBroadcastTableConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/broadcast/AlterBroadcastTableConfigurationEvent.java
@@ -34,7 +34,7 @@ public final class AlterBroadcastTableConfigurationEvent 
implements GovernanceEv
     
     private final Collection<String> config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/broadcast/DeleteBroadcastTableConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/broadcast/DeleteBroadcastTableConfigurationEvent.java
index dd0e82b9f1a..fef0f3e094b 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/broadcast/DeleteBroadcastTableConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/broadcast/DeleteBroadcastTableConfigurationEvent.java
@@ -30,7 +30,7 @@ public final class DeleteBroadcastTableConfigurationEvent 
implements GovernanceE
     
     private final String databaseName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/AddShardingTableConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/AddShardingTableConfigurationEvent.java
index 71870cc9c93..d2ec2bfea95 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/AddShardingTableConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/AddShardingTableConfigurationEvent.java
@@ -34,7 +34,7 @@ public final class AddShardingTableConfigurationEvent<T> 
implements GovernanceEv
     
     private final T config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/AlterShardingTableConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/AlterShardingTableConfigurationEvent.java
index 2f0470f1ec5..5d6b77d01af 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/AlterShardingTableConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/AlterShardingTableConfigurationEvent.java
@@ -36,7 +36,7 @@ public final class AlterShardingTableConfigurationEvent<T> 
implements Governance
     
     private final T config;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/DeleteShardingTableConfigurationEvent.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/DeleteShardingTableConfigurationEvent.java
index 3ee92742afd..cf865f50bcb 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/DeleteShardingTableConfigurationEvent.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/table/sharding/DeleteShardingTableConfigurationEvent.java
@@ -32,7 +32,7 @@ public final class DeleteShardingTableConfigurationEvent 
implements GovernanceEv
     
     private final String tableName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingTableConfigurationSubscriber.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingTableConfigurationSubscriber.java
index 74be7f6895a..8d4b22125f0 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingTableConfigurationSubscriber.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingTableConfigurationSubscriber.java
@@ -69,7 +69,7 @@ public final class ShardingTableConfigurationSubscriber 
implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final 
AddShardingTableConfigurationEvent<ShardingTableRuleConfiguration> event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
@@ -94,7 +94,7 @@ public final class ShardingTableConfigurationSubscriber 
implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final 
AddShardingAutoTableConfigurationEvent<ShardingAutoTableRuleConfiguration> 
event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
@@ -141,7 +141,7 @@ public final class ShardingTableConfigurationSubscriber 
implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final AddBroadcastTableConfigurationEvent 
event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
@@ -162,7 +162,7 @@ public final class ShardingTableConfigurationSubscriber 
implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final 
AlterShardingTableConfigurationEvent<ShardingTableRuleConfiguration> event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
@@ -180,7 +180,7 @@ public final class ShardingTableConfigurationSubscriber 
implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final 
AlterShardingAutoTableConfigurationEvent<ShardingAutoTableRuleConfiguration> 
event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
@@ -213,7 +213,7 @@ public final class ShardingTableConfigurationSubscriber 
implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final AlterBroadcastTableConfigurationEvent 
event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
@@ -228,7 +228,7 @@ public final class ShardingTableConfigurationSubscriber 
implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final DeleteShardingTableConfigurationEvent 
event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
@@ -244,7 +244,7 @@ public final class ShardingTableConfigurationSubscriber 
implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final 
DeleteShardingAutoTableConfigurationEvent event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
@@ -273,7 +273,7 @@ public final class ShardingTableConfigurationSubscriber 
implements RuleConfigura
      */
     @Subscribe
     public synchronized void renew(final 
DeleteBroadcastTableConfigurationEvent event) {
-        if (event.getVersion() < 
instanceContext.getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/config/rule/global/event/AlterGlobalRuleConfigurationEvent.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/config/rule/global/event/AlterGlobalRuleConfigurationEvent.java
index 62c27a8780f..a06748a47bb 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/config/rule/global/event/AlterGlobalRuleConfigurationEvent.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/config/rule/global/event/AlterGlobalRuleConfigurationEvent.java
@@ -33,7 +33,7 @@ public final class AlterGlobalRuleConfigurationEvent 
implements GovernanceEvent
     
     private final String ruleSimpleName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/config/rule/global/event/DeleteGlobalRuleConfigurationEvent.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/config/rule/global/event/DeleteGlobalRuleConfigurationEvent.java
index e3512b0dfbe..a603147d5fb 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/config/rule/global/event/DeleteGlobalRuleConfigurationEvent.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/config/rule/global/event/DeleteGlobalRuleConfigurationEvent.java
@@ -30,7 +30,7 @@ public final class DeleteGlobalRuleConfigurationEvent 
implements GovernanceEvent
     
     private final String ruleSimpleName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String version;
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/mode/ModeContextManager.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/mode/ModeContextManager.java
index 6660949e2ab..6ca92f08fd3 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/mode/ModeContextManager.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/mode/ModeContextManager.java
@@ -172,7 +172,7 @@ public interface ModeContextManager {
      * @param key key
      * @return active version
      */
-    default int getActiveVersionByKey(String key) {
-        return 0;
+    default String getActiveVersionByKey(String key) {
+        return "";
     }
 }
diff --git 
a/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/event/AuthorityRuleConfigurationEventBuilder.java
 
b/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/event/AuthorityRuleConfigurationEventBuilder.java
index 19156f96667..1d46a33e041 100644
--- 
a/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/event/AuthorityRuleConfigurationEventBuilder.java
+++ 
b/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/event/AuthorityRuleConfigurationEventBuilder.java
@@ -49,12 +49,12 @@ public final class AuthorityRuleConfigurationEventBuilder 
implements GlobalRuleC
         }
         Optional<String> version = 
GlobalRuleNodeConverter.getVersion(AUTHORITY, event.getKey());
         if (version.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
-            return buildEvent(event, Integer.parseInt(version.get()));
+            return buildEvent(event, version.get());
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, 
final int version) {
+    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, 
final String version) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new 
AlterGlobalRuleConfigurationEvent(swapToConfig(event.getValue()), RULE_TYPE, 
event.getKey(), version));
         }
diff --git 
a/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/core/event/GlobalClockRuleConfigurationEventBuilder.java
 
b/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/core/event/GlobalClockRuleConfigurationEventBuilder.java
index 09ad07a890c..3ed057a98c4 100644
--- 
a/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/core/event/GlobalClockRuleConfigurationEventBuilder.java
+++ 
b/kernel/global-clock/core/src/main/java/org/apache/shardingsphere/globalclock/core/event/GlobalClockRuleConfigurationEventBuilder.java
@@ -49,12 +49,12 @@ public final class GlobalClockRuleConfigurationEventBuilder 
implements GlobalRul
         }
         Optional<String> version = 
GlobalRuleNodeConverter.getVersion(GLOBAL_CLOCK, event.getKey());
         if (version.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
-            return buildEvent(event, Integer.parseInt(version.get()));
+            return buildEvent(event, version.get());
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, 
final int version) {
+    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, 
final String version) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new 
AlterGlobalRuleConfigurationEvent(swapToConfig(event.getValue()), RULE_TYPE, 
event.getKey(), version));
         }
diff --git 
a/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/event/LoggingRuleConfigurationEventBuilder.java
 
b/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/event/LoggingRuleConfigurationEventBuilder.java
index 2ba642d2a9e..0f717806e2d 100644
--- 
a/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/event/LoggingRuleConfigurationEventBuilder.java
+++ 
b/kernel/logging/core/src/main/java/org/apache/shardingsphere/logging/event/LoggingRuleConfigurationEventBuilder.java
@@ -49,12 +49,12 @@ public final class LoggingRuleConfigurationEventBuilder 
implements GlobalRuleCon
         }
         Optional<String> version = GlobalRuleNodeConverter.getVersion(LOGGING, 
event.getKey());
         if (version.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
-            return buildEvent(event, Integer.parseInt(version.get()));
+            return buildEvent(event, version.get());
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, 
final int version) {
+    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, 
final String version) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new 
AlterGlobalRuleConfigurationEvent(swapToConfig(event.getValue()), RULE_TYPE, 
event.getKey(), version));
         }
diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/NewDatabaseMetaDataNode.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/NewDatabaseMetaDataNode.java
index 74652002e36..167f4033dab 100644
--- 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/NewDatabaseMetaDataNode.java
+++ 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/NewDatabaseMetaDataNode.java
@@ -396,13 +396,14 @@ public final class NewDatabaseMetaDataNode {
     }
     
     /**
-     * Decorate active version.
+     * Get version node by active version path.
      *
      * @param rulePath rule path
-     * @return group name
+     * @param activeVersion active version
+     * @return active version node
      */
-    public static String decorateActiveVersion(final String rulePath) {
-        return rulePath.substring(0, rulePath.indexOf(VERSIONS)) + 
ACTIVE_VERSION;
+    public static String getVersionNodeByActiveVersionPath(final String 
rulePath, final String activeVersion) {
+        return rulePath.substring(0, rulePath.indexOf(ACTIVE_VERSION)) + 
VERSIONS + "/" + activeVersion;
     }
     
     private static String getMetaDataNodeNode() {
diff --git 
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/NewDatabaseMetaDataNodeTest.java
 
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/NewDatabaseMetaDataNodeTest.java
index 408659711b4..e3f396f18ff 100644
--- 
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/NewDatabaseMetaDataNodeTest.java
+++ 
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/node/NewDatabaseMetaDataNodeTest.java
@@ -104,9 +104,9 @@ class NewDatabaseMetaDataNodeTest {
     }
     
     @Test
-    void assertDecorateActiveVersion() {
-        
assertThat(NewDatabaseMetaDataNode.decorateActiveVersion("/metadata/foo_db/schemas/foo_schema/views/foo_view/versions/0"),
-                
is("/metadata/foo_db/schemas/foo_schema/views/foo_view/active_version"));
+    void assertGetVersionNodeByActiveVersionPath() {
+        
assertThat(NewDatabaseMetaDataNode.getVersionNodeByActiveVersionPath("/metadata/foo_db/schemas/foo_schema/views/foo_view/active_version",
 "0"),
+                
is("/metadata/foo_db/schemas/foo_schema/views/foo_view/versions/0"));
     }
     
     @Test
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/event/SQLFederationRuleConfigurationEventBuilder.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/event/SQLFederationRuleConfigurationEventBuilder.java
index c1d833fc9a3..f568d13e924 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/event/SQLFederationRuleConfigurationEventBuilder.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/event/SQLFederationRuleConfigurationEventBuilder.java
@@ -49,12 +49,12 @@ public final class 
SQLFederationRuleConfigurationEventBuilder implements GlobalR
         }
         Optional<String> version = 
GlobalRuleNodeConverter.getVersion(SQL_FEDERATION, event.getKey());
         if (version.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
-            return buildEvent(event, Integer.parseInt(version.get()));
+            return buildEvent(event, version.get());
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, 
final int version) {
+    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, 
final String version) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new 
AlterGlobalRuleConfigurationEvent(swapToConfig(event.getValue()), RULE_TYPE, 
event.getKey(), version));
         }
diff --git 
a/kernel/sql-parser/core/src/main/java/org/apache/shardingsphere/parser/event/SQLParserRuleConfigurationEventBuilder.java
 
b/kernel/sql-parser/core/src/main/java/org/apache/shardingsphere/parser/event/SQLParserRuleConfigurationEventBuilder.java
index 299f137acef..87afe5f5719 100644
--- 
a/kernel/sql-parser/core/src/main/java/org/apache/shardingsphere/parser/event/SQLParserRuleConfigurationEventBuilder.java
+++ 
b/kernel/sql-parser/core/src/main/java/org/apache/shardingsphere/parser/event/SQLParserRuleConfigurationEventBuilder.java
@@ -49,12 +49,12 @@ public final class SQLParserRuleConfigurationEventBuilder 
implements GlobalRuleC
         }
         Optional<String> version = 
GlobalRuleNodeConverter.getVersion(SQL_PARSER, event.getKey());
         if (version.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
-            return buildEvent(event, Integer.parseInt(version.get()));
+            return buildEvent(event, version.get());
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, 
final int version) {
+    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, 
final String version) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new 
AlterGlobalRuleConfigurationEvent(swapToConfig(event.getValue()), RULE_TYPE, 
event.getKey(), version));
         }
diff --git 
a/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/event/SQLTranslatorConfigurationEventBuilder.java
 
b/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/event/SQLTranslatorConfigurationEventBuilder.java
index 3e58ed9b7e0..9897d20ca7a 100644
--- 
a/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/event/SQLTranslatorConfigurationEventBuilder.java
+++ 
b/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/event/SQLTranslatorConfigurationEventBuilder.java
@@ -49,12 +49,12 @@ public final class SQLTranslatorConfigurationEventBuilder 
implements GlobalRuleC
         }
         Optional<String> version = 
GlobalRuleNodeConverter.getVersion(SQL_TRANSLATOR, event.getKey());
         if (version.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
-            return buildEvent(event, Integer.parseInt(version.get()));
+            return buildEvent(event, version.get());
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, 
final int version) {
+    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, 
final String version) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new 
AlterGlobalRuleConfigurationEvent(swapToConfig(event.getValue()), RULE_TYPE, 
event.getKey(), version));
         }
diff --git 
a/kernel/traffic/core/src/main/java/org/apache/shardingsphere/traffic/event/TrafficRuleConfigurationEventBuilder.java
 
b/kernel/traffic/core/src/main/java/org/apache/shardingsphere/traffic/event/TrafficRuleConfigurationEventBuilder.java
index 1e8d1df6bc2..3a77bc1c3ce 100644
--- 
a/kernel/traffic/core/src/main/java/org/apache/shardingsphere/traffic/event/TrafficRuleConfigurationEventBuilder.java
+++ 
b/kernel/traffic/core/src/main/java/org/apache/shardingsphere/traffic/event/TrafficRuleConfigurationEventBuilder.java
@@ -49,12 +49,12 @@ public final class TrafficRuleConfigurationEventBuilder 
implements GlobalRuleCon
         }
         Optional<String> version = GlobalRuleNodeConverter.getVersion(TRAFFIC, 
event.getKey());
         if (version.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
-            return buildEvent(event, Integer.parseInt(version.get()));
+            return buildEvent(event, version.get());
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, 
final int version) {
+    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, 
final String version) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new 
AlterGlobalRuleConfigurationEvent(swapToConfig(event.getValue()), RULE_TYPE, 
event.getKey(), version));
         }
diff --git 
a/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/event/TransactionRuleConfigurationEventBuilder.java
 
b/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/event/TransactionRuleConfigurationEventBuilder.java
index 535dd8c7cea..3ed67e264f5 100644
--- 
a/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/event/TransactionRuleConfigurationEventBuilder.java
+++ 
b/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/event/TransactionRuleConfigurationEventBuilder.java
@@ -49,12 +49,12 @@ public final class TransactionRuleConfigurationEventBuilder 
implements GlobalRul
         }
         Optional<String> version = 
GlobalRuleNodeConverter.getVersion(TRANSACTION, event.getKey());
         if (version.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
-            return buildEvent(event, Integer.parseInt(version.get()));
+            return buildEvent(event, version.get());
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, 
final int version) {
+    private Optional<GovernanceEvent> buildEvent(final DataChangedEvent event, 
final String version) {
         if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
             return Optional.of(new 
AlterGlobalRuleConfigurationEvent(swapToConfig(event.getValue()), RULE_TYPE, 
event.getKey(), version));
         }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/AlterStorageUnitEvent.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/AlterStorageUnitEvent.java
index 14071820767..7652d840b4a 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/AlterStorageUnitEvent.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/AlterStorageUnitEvent.java
@@ -35,7 +35,7 @@ public final class AlterStorageUnitEvent implements 
GovernanceEvent {
     
     private final DataSourceProperties props;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/RegisterStorageUnitEvent.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/RegisterStorageUnitEvent.java
index 18b5e01cbb4..48c37521db7 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/RegisterStorageUnitEvent.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/RegisterStorageUnitEvent.java
@@ -35,7 +35,7 @@ public final class RegisterStorageUnitEvent implements 
GovernanceEvent {
     
     private final DataSourceProperties props;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/UnregisterStorageUnitEvent.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/UnregisterStorageUnitEvent.java
index 7a036bf56d3..ff44a047813 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/UnregisterStorageUnitEvent.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/datasource/UnregisterStorageUnitEvent.java
@@ -32,7 +32,7 @@ public final class UnregisterStorageUnitEvent implements 
GovernanceEvent {
     
     private final String storageUnitName;
     
-    private final String versionKey;
+    private final String activeVersionKey;
     
-    private final int version;
+    private final String activeVersion;
 }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/table/AlterTableEvent.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/table/AlterTableEvent.java
index 278bb4fef71..6019513632c 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/table/AlterTableEvent.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/table/AlterTableEvent.java
@@ -35,7 +35,7 @@ public final class AlterTableEvent implements GovernanceEvent 
{
     
     private final ShardingSphereTable table;
     
-    private final int version;
+    private final String activeVersionKey;
     
-    private final String versionKey;
+    private final String activeVersion;
 }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/table/DropTableEvent.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/table/DropTableEvent.java
index 27146d7c2bb..dccc650771c 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/table/DropTableEvent.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/table/DropTableEvent.java
@@ -34,7 +34,7 @@ public final class DropTableEvent implements GovernanceEvent {
     
     private final String tableName;
     
-    private final int version;
+    private final String activeVersionKey;
     
-    private final String versionKey;
+    private final String activeVersion;
 }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/view/AlterViewEvent.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/view/AlterViewEvent.java
index 77914291c40..5eb6f79c4bc 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/view/AlterViewEvent.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/view/AlterViewEvent.java
@@ -35,7 +35,7 @@ public final class AlterViewEvent implements GovernanceEvent {
     
     private final ShardingSphereView view;
     
-    private final int version;
+    private final String activeVersionKey;
     
-    private final String versionKey;
+    private final String activeVersion;
 }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/view/DropViewEvent.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/view/DropViewEvent.java
index 1054db29149..9c881bf8c3f 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/view/DropViewEvent.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/event/schema/view/DropViewEvent.java
@@ -34,7 +34,7 @@ public final class DropViewEvent implements GovernanceEvent {
     
     private final String viewName;
     
-    private final int version;
+    private final String activeVersionKey;
     
-    private final String versionKey;
+    private final String activeVersion;
 }
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/NewClusterModeContextManager.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/NewClusterModeContextManager.java
index 6ed45642749..b55f1e057a9 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/NewClusterModeContextManager.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/NewClusterModeContextManager.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.mode.manager.cluster;
 
-import com.google.common.base.Strings;
 import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 import org.apache.shardingsphere.infra.datasource.props.DataSourceProperties;
 import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
@@ -27,7 +26,6 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSp
 import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaPOJO;
 import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
-import org.apache.shardingsphere.metadata.persist.node.NewDatabaseMetaDataNode;
 import 
org.apache.shardingsphere.metadata.persist.service.database.DatabaseMetaDataBasedPersistService;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.manager.ContextManagerAware;
@@ -152,9 +150,8 @@ public final class NewClusterModeContextManager implements 
ModeContextManager, C
     }
     
     @Override
-    public int getActiveVersionByKey(final String key) {
-        String activeVersion = 
contextManager.getMetaDataContexts().getPersistService().getRepository().getDirectly(NewDatabaseMetaDataNode.decorateActiveVersion(key));
-        return Strings.isNullOrEmpty(activeVersion) ? 0 : 
Integer.parseInt(activeVersion);
+    public String getActiveVersionByKey(final String key) {
+        return 
contextManager.getMetaDataContexts().getPersistService().getRepository().getDirectly(key);
     }
     
     @Override
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/watcher/NewMetaDataChangedWatcher.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/watcher/NewMetaDataChangedWatcher.java
index 19e78207628..0fba67a4519 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/watcher/NewMetaDataChangedWatcher.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/watcher/NewMetaDataChangedWatcher.java
@@ -120,18 +120,18 @@ public final class NewMetaDataChangedWatcher implements 
NewGovernanceWatcher<Gov
     
     private Optional<GovernanceEvent> createTableChangedEvent(final String 
databaseName, final String schemaName, final String tableNameVersion, final 
DataChangedEvent event) {
         if (Type.DELETED == event.getType()) {
-            return Optional.of(new DropTableEvent(databaseName, schemaName, 
NewDatabaseMetaDataNode.getTableName(event.getKey()).orElse(""), 
Integer.parseInt(tableNameVersion), event.getKey()));
+            return Optional.of(new DropTableEvent(databaseName, schemaName, 
NewDatabaseMetaDataNode.getTableName(event.getKey()).orElse(""), 
event.getKey(), tableNameVersion));
         }
         return Optional.of(new AlterTableEvent(databaseName, schemaName,
-                new 
YamlTableSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(), 
YamlShardingSphereTable.class)), Integer.parseInt(tableNameVersion), 
event.getKey()));
+                new 
YamlTableSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(), 
YamlShardingSphereTable.class)), event.getKey(), tableNameVersion));
     }
     
     private Optional<GovernanceEvent> createViewChangedEvent(final String 
databaseName, final String schemaName, final String viewNameVersion, final 
DataChangedEvent event) {
         if (Type.DELETED == event.getType()) {
-            return Optional.of(new DropViewEvent(databaseName, schemaName, 
NewDatabaseMetaDataNode.getViewName(event.getKey()).orElse(""), 
Integer.parseInt(viewNameVersion), event.getKey()));
+            return Optional.of(new DropViewEvent(databaseName, schemaName, 
NewDatabaseMetaDataNode.getViewName(event.getKey()).orElse(""), event.getKey(), 
viewNameVersion));
         }
         return Optional.of(new AlterViewEvent(databaseName, schemaName,
-                new 
YamlViewSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(), 
YamlShardingSphereView.class)), Integer.parseInt(viewNameVersion), 
event.getKey()));
+                new 
YamlViewSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(), 
YamlShardingSphereView.class)), event.getKey(), viewNameVersion));
     }
     
     @SuppressWarnings("unchecked")
@@ -146,13 +146,13 @@ public final class NewMetaDataChangedWatcher implements 
NewGovernanceWatcher<Gov
         }
         if (Type.ADDED == event.getType()) {
             return Optional.of(new RegisterStorageUnitEvent(databaseName, 
dataSourceName.get(),
-                    new 
YamlDataSourceConfigurationSwapper().swapToDataSourceProperties(YamlEngine.unmarshal(event.getValue(),
 Map.class)), event.getKey(), Integer.parseInt(version.get())));
+                    new 
YamlDataSourceConfigurationSwapper().swapToDataSourceProperties(YamlEngine.unmarshal(event.getValue(),
 Map.class)), event.getKey(), version.get()));
         }
         if (Type.UPDATED == event.getType()) {
             return Optional.of(new AlterStorageUnitEvent(databaseName, 
dataSourceName.get(),
-                    new 
YamlDataSourceConfigurationSwapper().swapToDataSourceProperties(YamlEngine.unmarshal(event.getValue(),
 Map.class)), event.getKey(), Integer.parseInt(version.get())));
+                    new 
YamlDataSourceConfigurationSwapper().swapToDataSourceProperties(YamlEngine.unmarshal(event.getValue(),
 Map.class)), event.getKey(), version.get()));
         }
-        return Optional.of(new UnregisterStorageUnitEvent(databaseName, 
dataSourceName.get(), event.getKey(), Integer.parseInt(version.get())));
+        return Optional.of(new UnregisterStorageUnitEvent(databaseName, 
dataSourceName.get(), event.getKey(), version.get()));
     }
     
     private Optional<GovernanceEvent> createDatabaseRuleEvent(final String 
databaseName, final DataChangedEvent event) {
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewDataSourceChangedSubscriber.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewDataSourceChangedSubscriber.java
index e90cb07e78d..e782292f91b 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewDataSourceChangedSubscriber.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewDataSourceChangedSubscriber.java
@@ -44,7 +44,7 @@ public final class NewDataSourceChangedSubscriber {
      */
     @Subscribe
     public void renew(final RegisterStorageUnitEvent event) {
-        if (event.getVersion() < 
contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         contextManager.registerStorageUnit(event.getDatabaseName(), 
event.getStorageUnitName(), event.getProps());
@@ -57,7 +57,7 @@ public final class NewDataSourceChangedSubscriber {
      */
     @Subscribe
     public void renew(final AlterStorageUnitEvent event) {
-        if (event.getVersion() < 
contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         contextManager.alterStorageUnit(event.getDatabaseName(), 
event.getStorageUnitName(), event.getProps());
@@ -70,7 +70,7 @@ public final class NewDataSourceChangedSubscriber {
      */
     @Subscribe
     public void renew(final UnregisterStorageUnitEvent event) {
-        if (event.getVersion() < 
contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         contextManager.unregisterStorageUnit(event.getDatabaseName(), 
event.getStorageUnitName());
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewResourceMetaDataChangedSubscriber.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewResourceMetaDataChangedSubscriber.java
index 6122ff27d98..70996a146f7 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewResourceMetaDataChangedSubscriber.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewResourceMetaDataChangedSubscriber.java
@@ -89,7 +89,7 @@ public final class NewResourceMetaDataChangedSubscriber {
      */
     @Subscribe
     public synchronized void renew(final AlterTableEvent event) {
-        if (event.getVersion() < 
contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         contextManager.alterSchema(event.getDatabaseName(), 
event.getSchemaName(), event.getTable(), null);
@@ -102,7 +102,7 @@ public final class NewResourceMetaDataChangedSubscriber {
      */
     @Subscribe
     public synchronized void renew(final DropTableEvent event) {
-        if (event.getVersion() < 
contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         contextManager.alterSchema(event.getDatabaseName(), 
event.getSchemaName(), event.getTableName(), null);
@@ -116,7 +116,7 @@ public final class NewResourceMetaDataChangedSubscriber {
      */
     @Subscribe
     public synchronized void renew(final AlterViewEvent event) {
-        if (event.getVersion() < 
contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         contextManager.alterSchema(event.getDatabaseName(), 
event.getSchemaName(), null, event.getView());
@@ -129,7 +129,7 @@ public final class NewResourceMetaDataChangedSubscriber {
      */
     @Subscribe
     public synchronized void renew(final DropViewEvent event) {
-        if (event.getVersion() < 
contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getVersionKey()))
 {
+        if 
(!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         contextManager.alterSchema(event.getDatabaseName(), 
event.getSchemaName(), null, event.getViewName());

Reply via email to