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

tuichenchuxin 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 046c70b85a5 Switch active version when execute Create/Drop table 
(#26863)
046c70b85a5 is described below

commit 046c70b85a5ff3f950c84e327ad3b583480e8488
Author: zhaojinchao <[email protected]>
AuthorDate: Mon Jul 10 10:21:28 2023 +0800

    Switch active version when execute Create/Drop table (#26863)
---
 .../infra/instance/mode/ModeContextManager.java    | 23 ----------------------
 .../MetaDataVersionBasedPersistService.java        | 17 ++++++++++++++++
 .../version/MetaDataVersionPersistService.java     | 11 +++++++++++
 .../mode/subsciber/RuleItemChangedSubscriber.java  |  5 +++--
 .../cluster/NewClusterModeContextManager.java      | 14 ++-----------
 .../NewConfigurationChangedSubscriber.java         |  8 ++++----
 .../NewResourceMetaDataChangedSubscriber.java      |  4 ++--
 7 files changed, 39 insertions(+), 43 deletions(-)

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 429a535ed00..691cc43b54f 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
@@ -163,27 +163,4 @@ public interface ModeContextManager {
      * @param props pros
      */
     void alterProperties(Properties props);
-    
-    /**
-     * TODO Remove to MetaDataPersistService
-     * Get active version by key.
-     *
-     * @param key key
-     * @return active version
-     */
-    default String getActiveVersionByKey(String key) {
-        return "";
-    }
-    
-    /**
-     * TODO Remove to MetaDataPersistService
-     * Get version path by active version key.
-     *
-     * @param key key
-     * @param activeVersion active version
-     * @return version path
-     */
-    default String getVersionPathByActiveVersionKey(String key, String 
activeVersion) {
-        return "";
-    }
 }
diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionBasedPersistService.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionBasedPersistService.java
index 3abc83f2194..6140cefdf1e 100644
--- 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionBasedPersistService.java
+++ 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionBasedPersistService.java
@@ -32,4 +32,21 @@ public interface MetaDataVersionBasedPersistService {
      * @param metaDataVersions meta data versions
      */
     void switchActiveVersion(Collection<MetaDataVersion> metaDataVersions);
+    
+    /**
+     * Get active version by full path.
+     *
+     * @param fullPath full path
+     * @return active version
+     */
+    String getActiveVersionByFullPath(String fullPath);
+    
+    /**
+     * Get version path by active version.
+     *
+     * @param path path
+     * @param activeVersion active version
+     * @return version path
+     */
+    String getVersionPathByActiveVersion(String path, String activeVersion);
 }
diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java
index 6967d0337fa..e029370ffb6 100644
--- 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java
+++ 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java
@@ -19,6 +19,7 @@ package 
org.apache.shardingsphere.metadata.persist.service.version;
 
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
+import org.apache.shardingsphere.metadata.persist.node.NewDatabaseMetaDataNode;
 import org.apache.shardingsphere.mode.spi.PersistRepository;
 
 import java.util.Collection;
@@ -46,4 +47,14 @@ public final class MetaDataVersionPersistService implements 
MetaDataVersionBased
             repository.delete(String.join("/", each.getKey(), VERSIONS, 
each.getCurrentActiveVersion()));
         }
     }
+    
+    @Override
+    public String getActiveVersionByFullPath(final String fullPath) {
+        return repository.getDirectly(fullPath);
+    }
+    
+    @Override
+    public String getVersionPathByActiveVersion(final String path, final 
String activeVersion) {
+        return 
repository.getDirectly(NewDatabaseMetaDataNode.getVersionNodeByActiveVersionPath(path,
 activeVersion));
+    }
 }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/subsciber/RuleItemChangedSubscriber.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/subsciber/RuleItemChangedSubscriber.java
index 5b8c6f01d5b..79b13178f73 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/subsciber/RuleItemChangedSubscriber.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/subsciber/RuleItemChangedSubscriber.java
@@ -45,11 +45,12 @@ public final class RuleItemChangedSubscriber {
     @SuppressWarnings({"UnstableApiUsage", "rawtypes", "unchecked"})
     @Subscribe
     public void renew(final AlterRuleItemEvent event) {
-        if 
(!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
+        if 
(!event.getActiveVersion().equals(contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().getActiveVersionByFullPath(event.getActiveVersionKey())))
 {
             return;
         }
         RuleItemConfigurationChangedProcessor processor = 
TypedSPILoader.getService(RuleItemConfigurationChangedProcessor.class, 
event.getType());
-        String yamlContent = 
contextManager.getInstanceContext().getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion());
+        String yamlContent =
+                
contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().getVersionPathByActiveVersion(event.getActiveVersionKey(),
 event.getActiveVersion());
         ShardingSphereDatabase database = 
contextManager.getMetaDataContexts().getMetaData().getDatabases().get(event.getDatabaseName());
         RuleConfiguration currentRuleConfig = 
processor.findRuleConfiguration(database);
         synchronized (this) {
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 f3bc0261d41..8cbdd641691 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
@@ -26,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.config.database.DatabaseBasedPersistService;
 import 
org.apache.shardingsphere.metadata.persist.service.config.global.GlobalPersistService;
 import 
org.apache.shardingsphere.metadata.persist.service.database.DatabaseMetaDataBasedPersistService;
@@ -128,7 +127,8 @@ public final class NewClusterModeContextManager implements 
ModeContextManager, C
     @Override
     public void alterRuleConfiguration(final String databaseName, final 
Collection<RuleConfiguration> ruleConfigs) {
         ruleConfigs.removeIf(each -> 
!each.getClass().isAssignableFrom(SingleRuleConfiguration.class));
-        
contextManager.getMetaDataContexts().getPersistService().getDatabaseRulePersistService().persist(databaseName,
 ruleConfigs);
+        
contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService()
+                
.switchActiveVersion(contextManager.getMetaDataContexts().getPersistService().getDatabaseRulePersistService().persistConfig(databaseName,
 ruleConfigs));
     }
     
     @Override
@@ -168,16 +168,6 @@ public final class NewClusterModeContextManager implements 
ModeContextManager, C
         
contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().switchActiveVersion(versions);
     }
     
-    @Override
-    public String getActiveVersionByKey(final String key) {
-        return 
contextManager.getMetaDataContexts().getPersistService().getRepository().getDirectly(key);
-    }
-    
-    @Override
-    public String getVersionPathByActiveVersionKey(final String key, final 
String activeVersion) {
-        return 
contextManager.getMetaDataContexts().getPersistService().getRepository().getDirectly(NewDatabaseMetaDataNode.getVersionNodeByActiveVersionPath(key,
 activeVersion));
-    }
-    
     @Override
     public void setContextManagerAware(final ContextManager contextManager) {
         this.contextManager = contextManager;
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewConfigurationChangedSubscriber.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewConfigurationChangedSubscriber.java
index 3fd5c791f1f..848408952a1 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewConfigurationChangedSubscriber.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/NewConfigurationChangedSubscriber.java
@@ -48,7 +48,7 @@ public final class NewConfigurationChangedSubscriber {
      */
     @Subscribe
     public void renew(final RegisterStorageUnitEvent event) {
-        if 
(!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
+        if 
(!event.getActiveVersion().equals(contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().getActiveVersionByFullPath(event.getActiveVersionKey())))
 {
             return;
         }
         contextManager.registerStorageUnit(event.getDatabaseName(),
@@ -62,7 +62,7 @@ public final class NewConfigurationChangedSubscriber {
      */
     @Subscribe
     public void renew(final AlterStorageUnitEvent event) {
-        if 
(!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
+        if 
(!event.getActiveVersion().equals(contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().getActiveVersionByFullPath(event.getActiveVersionKey())))
 {
             return;
         }
         contextManager.alterStorageUnit(event.getDatabaseName(), 
event.getStorageUnitName(),
@@ -115,7 +115,7 @@ public final class NewConfigurationChangedSubscriber {
      */
     @Subscribe
     public synchronized void renew(final AlterGlobalRuleConfigurationEvent 
event) {
-        if 
(!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
+        if 
(!event.getActiveVersion().equals(contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().getActiveVersionByFullPath(event.getActiveVersionKey())))
 {
             return;
         }
         
contextManager.alterGlobalRuleConfiguration(contextManager.getMetaDataContexts().getPersistService().getGlobalRuleService().load(event.getRuleSimpleName()));
@@ -128,7 +128,7 @@ public final class NewConfigurationChangedSubscriber {
      */
     @Subscribe
     public synchronized void renew(final AlterPropertiesEvent event) {
-        if 
(!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
+        if 
(!event.getActiveVersion().equals(contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().getActiveVersionByFullPath(event.getActiveVersionKey())))
 {
             return;
         }
         
contextManager.alterProperties(contextManager.getMetaDataContexts().getPersistService().getPropsService().load());
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 3960b38e665..231512d6d52 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
@@ -93,7 +93,7 @@ public final class NewResourceMetaDataChangedSubscriber {
      */
     @Subscribe
     public synchronized void renew(final AlterTableEvent event) {
-        if 
(!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
+        if 
(!event.getActiveVersion().equals(contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().getActiveVersionByFullPath(event.getActiveVersionKey())))
 {
             return;
         }
         Map<String, ShardingSphereTable> tables = 
contextManager.getMetaDataContexts().getPersistService().getDatabaseMetaDataService()
@@ -118,7 +118,7 @@ public final class NewResourceMetaDataChangedSubscriber {
      */
     @Subscribe
     public synchronized void renew(final AlterViewEvent event) {
-        if 
(!event.getActiveVersion().equals(contextManager.getInstanceContext().getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
+        if 
(!event.getActiveVersion().equals(contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().getActiveVersionByFullPath(event.getActiveVersionKey())))
 {
             return;
         }
         Map<String, ShardingSphereView> views = 
contextManager.getMetaDataContexts().getPersistService().getDatabaseMetaDataService()

Reply via email to