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

yx9o 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 5b71d7a5f13 Move alterSchemaMetaData from ConfigurationManager to 
MetaDataPersistService (#32073)
5b71d7a5f13 is described below

commit 5b71d7a5f13da248f2cac7acc50495f917314d79
Author: Haoran Meng <[email protected]>
AuthorDate: Fri Jul 12 15:14:44 2024 +0800

    Move alterSchemaMetaData from ConfigurationManager to 
MetaDataPersistService (#32073)
---
 .../metadata/persist/MetaDataPersistService.java   | 22 ++++++++++++++++++++++
 .../metadata/manager/ConfigurationManager.java     | 21 ---------------------
 .../manager/GlobalConfigurationManager.java        |  2 +-
 .../ClusterMetaDataManagerPersistService.java      |  4 ++--
 .../StandaloneMetaDataManagerPersistService.java   |  2 +-
 5 files changed, 26 insertions(+), 25 deletions(-)

diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
index fe3845d89f2..08c5188aed3 100644
--- 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
+++ 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
@@ -24,6 +24,9 @@ import 
org.apache.shardingsphere.infra.config.rule.decorator.RuleConfigurationDe
 import 
org.apache.shardingsphere.infra.datasource.pool.config.DataSourceConfiguration;
 import 
org.apache.shardingsphere.infra.datasource.pool.props.creator.DataSourcePoolPropertiesCreator;
 import 
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.manager.GenericSchemaManager;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import 
org.apache.shardingsphere.metadata.persist.data.ShardingSphereDataPersistService;
@@ -137,4 +140,23 @@ public final class MetaDataPersistService {
         return 
dataSourceUnitService.load(databaseName).entrySet().stream().collect(Collectors.toMap(Entry::getKey,
                 entry -> 
DataSourcePoolPropertiesCreator.createConfiguration(entry.getValue()), 
(oldValue, currentValue) -> oldValue, LinkedHashMap::new));
     }
+    
+    /**
+     * Persist meta data by reload sharding sphere database.
+     *
+     * @param databaseName database name
+     * @param reloadDatabase reload database
+     * @param currentDatabase current database
+     * @param isDropConfig is drop config
+     */
+    public void persistMetaDataByReloadDatabase(final String databaseName, 
final ShardingSphereDatabase reloadDatabase, final ShardingSphereDatabase 
currentDatabase, final boolean isDropConfig) {
+        Map<String, ShardingSphereSchema> toBeAlterSchemas = 
GenericSchemaManager.getToBeDeletedTablesBySchemas(reloadDatabase.getSchemas(), 
currentDatabase.getSchemas());
+        Map<String, ShardingSphereSchema> toBeAddedSchemas = 
GenericSchemaManager.getToBeAddedTablesBySchemas(reloadDatabase.getSchemas(), 
currentDatabase.getSchemas());
+        if (isDropConfig) {
+            toBeAddedSchemas.forEach((key, value) -> 
databaseMetaDataService.persistByDropConfiguration(databaseName, key, value));
+        } else {
+            toBeAddedSchemas.forEach((key, value) -> 
databaseMetaDataService.persistByAlterConfiguration(databaseName, key, value));
+        }
+        toBeAlterSchemas.forEach((key, value) -> 
databaseMetaDataService.delete(databaseName, key, value));
+    }
 }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ConfigurationManager.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ConfigurationManager.java
index 0ab0fca1172..ba8226f46fa 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ConfigurationManager.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ConfigurationManager.java
@@ -30,8 +30,6 @@ import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaDa
 import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNode;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
 import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.manager.GenericSchemaManager;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder;
 import org.apache.shardingsphere.metadata.factory.ExternalMetaDataFactory;
 import org.apache.shardingsphere.metadata.factory.InternalMetaDataFactory;
@@ -68,25 +66,6 @@ public final class ConfigurationManager {
         metaDataPersistService = new MetaDataPersistService(repository);
     }
     
-    /**
-     * Alter schema meta data.
-     *
-     * @param databaseName database name
-     * @param reloadDatabase reload database
-     * @param currentDatabase current database
-     * @param isDropConfig is drop configuration
-     */
-    public void alterSchemaMetaData(final String databaseName, final 
ShardingSphereDatabase reloadDatabase, final ShardingSphereDatabase 
currentDatabase, final boolean isDropConfig) {
-        Map<String, ShardingSphereSchema> toBeAlterSchemas = 
GenericSchemaManager.getToBeDeletedTablesBySchemas(reloadDatabase.getSchemas(), 
currentDatabase.getSchemas());
-        Map<String, ShardingSphereSchema> toBeAddedSchemas = 
GenericSchemaManager.getToBeAddedTablesBySchemas(reloadDatabase.getSchemas(), 
currentDatabase.getSchemas());
-        if (isDropConfig) {
-            toBeAddedSchemas.forEach((key, value) -> 
metaDataPersistService.getDatabaseMetaDataService().persistByDropConfiguration(databaseName,
 key, value));
-        } else {
-            toBeAddedSchemas.forEach((key, value) -> 
metaDataPersistService.getDatabaseMetaDataService().persistByAlterConfiguration(databaseName,
 key, value));
-        }
-        toBeAlterSchemas.forEach((key, value) -> 
metaDataPersistService.getDatabaseMetaDataService().delete(databaseName, key, 
value));
-    }
-    
     /**
      * Get effective resource meta data.
      *
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/GlobalConfigurationManager.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/GlobalConfigurationManager.java
index d2de121876a..23544272e0a 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/GlobalConfigurationManager.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/GlobalConfigurationManager.java
@@ -41,7 +41,7 @@ import java.util.Properties;
 import java.util.concurrent.atomic.AtomicReference;
 
 /**
- * Configuration context manager.
+ * Global configuration manager.
  */
 @Slf4j
 public final class GlobalConfigurationManager {
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistService.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistService.java
index e46cfd663b6..cf3fde51854 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistService.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistService.java
@@ -179,14 +179,14 @@ public final class ClusterMetaDataManagerPersistService 
implements MetaDataManag
         
Optional.ofNullable(reloadMetaDataContexts.getStatistics().getDatabaseData().get(databaseName))
                 .ifPresent(optional -> 
optional.getSchemaData().forEach((schemaName, schemaData) -> 
metaDataPersistService.getShardingSphereDataPersistService()
                         .persist(databaseName, schemaName, schemaData, 
originalMetaDataContexts.getMetaData().getDatabases())));
-        
metaDataContextManager.getConfigurationManager().alterSchemaMetaData(databaseName,
 reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
+        metaDataPersistService.persistMetaDataByReloadDatabase(databaseName, 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
                 
originalMetaDataContexts.getMetaData().getDatabase(databaseName), isDropConfig);
     }
     
     @Override
     public void afterRuleConfigurationAltered(final String databaseName, final 
MetaDataContexts originalMetaDataContexts, final boolean isDropConfig) {
         MetaDataContexts reloadMetaDataContexts = 
metaDataContextManager.getMetaDataContexts().get();
-        
metaDataContextManager.getConfigurationManager().alterSchemaMetaData(databaseName,
 reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
+        metaDataPersistService.persistMetaDataByReloadDatabase(databaseName, 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
                 
originalMetaDataContexts.getMetaData().getDatabase(databaseName), isDropConfig);
     }
     
diff --git 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/StandaloneMetaDataManagerPersistService.java
 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/StandaloneMetaDataManagerPersistService.java
index 25d68f1c060..48d8e480b1b 100644
--- 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/StandaloneMetaDataManagerPersistService.java
+++ 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/StandaloneMetaDataManagerPersistService.java
@@ -258,7 +258,7 @@ public final class StandaloneMetaDataManagerPersistService 
implements MetaDataMa
                 .getDatabase(databaseName).getResourceMetaData(), 
toBeDroppedStorageUnitNames);
         ConfigurationManager configurationManager = 
metaDataContextManager.getConfigurationManager();
         MetaDataContexts reloadMetaDataContexts = 
configurationManager.createMetaDataContexts(databaseName, false, 
switchingResource, null);
-        configurationManager.alterSchemaMetaData(databaseName, 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
+        metaDataPersistService.persistMetaDataByReloadDatabase(databaseName, 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
                 
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName),
 true);
         metaDataContextManager.deletedSchemaNames(databaseName, 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
                 
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName));

Reply via email to