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));