You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2022/05/17 06:58:46 UTC
[shardingsphere] branch master updated: Persist meta data after build MetaDataContexts finished. (#17726)
This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 acf037b0d30 Persist meta data after build MetaDataContexts finished. (#17726)
acf037b0d30 is described below
commit acf037b0d30b8ca2700df29d9d0372167b889c37
Author: zhaojinchao <zh...@apache.org>
AuthorDate: Tue May 17 14:58:41 2022 +0800
Persist meta data after build MetaDataContexts finished. (#17726)
---
.../mode/manager/ContextManager.java | 38 +++++++++-------------
.../cluster/ClusterContextManagerBuilder.java | 8 ++---
2 files changed, 20 insertions(+), 26 deletions(-)
diff --git a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index 30912239258..1cffc7a0cd4 100644
--- a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++ b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -138,7 +138,7 @@ public final class ContextManager implements AutoCloseable {
metaDataContexts.getOptimizerContext().getFederationMetaData().getDatabases().put(databaseName, databaseMetaData);
metaDataContexts.getOptimizerContext().getPlannerContexts().put(databaseName, OptimizerPlannerContextFactory.create(databaseMetaData));
metaDataContexts.getMetaDataMap().put(databaseName, newMetaDataContexts.getMetaData(databaseName));
- metaDataContexts.getMetaDataPersistService().ifPresent(this::persistMetaData);
+ persistMetaData(metaDataContexts);
renewAllTransactionContext();
}
@@ -190,22 +190,12 @@ public final class ContextManager implements AutoCloseable {
}
}
- private void persistMetaData(final MetaDataPersistService metaDataPersistService) {
+ private void persistMetaData(final MetaDataContexts metaDataContexts) {
metaDataContexts.getMetaDataMap().forEach((databaseName, schemas) -> schemas.getSchemas().forEach((schemaName, tables) -> {
if (tables.getTables().isEmpty()) {
- metaDataPersistService.getSchemaMetaDataService().persistSchema(databaseName, schemaName);
+ metaDataContexts.getMetaDataPersistService().ifPresent(optional -> optional.getSchemaMetaDataService().persistSchema(databaseName, schemaName));
} else {
- metaDataPersistService.getSchemaMetaDataService().persistTables(databaseName, schemaName, tables);
- }
- }));
- }
-
- private void persistMetaData(final MetaDataPersistService metaDataPersistService, final MetaDataContextsBuilder builder) {
- builder.getDatabaseMap().forEach((databaseName, schemas) -> schemas.getSchemas().forEach((schemaName, tables) -> {
- if (tables.getTables().isEmpty()) {
- metaDataPersistService.getSchemaMetaDataService().persistSchema(databaseName, schemaName);
- } else {
- metaDataPersistService.getSchemaMetaDataService().persistTables(databaseName, schemaName, tables);
+ metaDataContexts.getMetaDataPersistService().ifPresent(optional -> optional.getSchemaMetaDataService().persistTables(databaseName, schemaName, tables));
}
}));
}
@@ -540,8 +530,9 @@ public final class ContextManager implements AutoCloseable {
metaDataPersistService.ifPresent(optional -> persistTransactionConfiguration(databaseConfig, optional));
MetaDataContextsBuilder builder = new MetaDataContextsBuilder(
Collections.singletonMap(originalMetaData.getDatabaseName(), databaseConfig), metaDataContexts.getGlobalRuleMetaData().getConfigurations(), metaDataContexts.getProps());
- metaDataContexts.getMetaDataPersistService().ifPresent(optional -> persistMetaData(optional, builder));
- return builder.build(metaDataContexts.getMetaDataPersistService().orElse(null));
+ MetaDataContexts result = builder.build(metaDataContexts.getMetaDataPersistService().orElse(null));
+ persistMetaData(result);
+ return result;
}
private void persistTransactionConfiguration(final DatabaseConfiguration databaseConfig, final MetaDataPersistService metaDataPersistService) {
@@ -554,8 +545,9 @@ public final class ContextManager implements AutoCloseable {
MetaDataContextsBuilder builder = new MetaDataContextsBuilder(
Collections.singletonMap(originalMetaData.getDatabaseName(), new DataSourceProvidedDatabaseConfiguration(originalMetaData.getResource().getDataSources(), ruleConfigs)),
metaDataContexts.getGlobalRuleMetaData().getConfigurations(), metaDataContexts.getProps());
- metaDataContexts.getMetaDataPersistService().ifPresent(optional -> persistMetaData(optional, builder));
- return builder.build(metaDataContexts.getMetaDataPersistService().orElse(null));
+ MetaDataContexts result = builder.build(metaDataContexts.getMetaDataPersistService().orElse(null));
+ persistMetaData(result);
+ return result;
}
private MetaDataContexts buildChangedMetaDataContextWithChangedDataSource(final ShardingSphereMetaData originalMetaData,
@@ -567,8 +559,9 @@ public final class ContextManager implements AutoCloseable {
originalMetaData.getRuleMetaData().getConfigurations());
MetaDataContextsBuilder builder = new MetaDataContextsBuilder(Collections.singletonMap(originalMetaData.getDatabaseName(), databaseConfig),
metaDataContexts.getGlobalRuleMetaData().getConfigurations(), metaDataContexts.getProps());
- metaDataContexts.getMetaDataPersistService().ifPresent(optional -> persistMetaData(optional, builder));
- return builder.build(metaDataContexts.getMetaDataPersistService().orElse(null));
+ MetaDataContexts result = builder.build(metaDataContexts.getMetaDataPersistService().orElse(null));
+ persistMetaData(result);
+ return result;
}
private MetaDataContexts buildChangedMetaDataContextWithChangedDataSourceAndRule(final ShardingSphereMetaData originalMetaData, final Map<String, DataSourceProperties> newDataSourceProps,
@@ -579,8 +572,9 @@ public final class ContextManager implements AutoCloseable {
getAddedDataSources(originalMetaData, newDataSourceProps), changedDataSources, deletedDataSources), ruleConfigs);
MetaDataContextsBuilder builder = new MetaDataContextsBuilder(
Collections.singletonMap(originalMetaData.getDatabaseName(), databaseConfig), metaDataContexts.getGlobalRuleMetaData().getConfigurations(), metaDataContexts.getProps());
- metaDataContexts.getMetaDataPersistService().ifPresent(optional -> persistMetaData(optional, builder));
- return builder.build(metaDataContexts.getMetaDataPersistService().orElse(null));
+ MetaDataContexts result = builder.build(metaDataContexts.getMetaDataPersistService().orElse(null));
+ persistMetaData(result);
+ return result;
}
private Map<String, DataSource> getNewDataSources(final Map<String, DataSource> originalDataSources,
diff --git a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java
index 073dc47199e..36172f4a2a0 100644
--- a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java
+++ b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java
@@ -71,7 +71,7 @@ public final class ClusterContextManagerBuilder implements ContextManagerBuilder
RegistryCenter registryCenter = new RegistryCenter(repository);
MetaDataContextsBuilder builder = createMetaDataContextsBuilder(metaDataPersistService, parameter);
MetaDataContexts metaDataContexts = builder.build(metaDataPersistService);
- persistMetaData(metaDataPersistService, metaDataContexts);
+ persistMetaData(metaDataContexts);
Properties transactionProps = getTransactionProperties(metaDataContexts);
persistTransactionConfiguration(parameter, metaDataPersistService, transactionProps);
ContextManager result = createContextManager(repository, metaDataPersistService, parameter.getInstanceDefinition(), metaDataContexts, transactionProps, parameter.getModeConfig());
@@ -143,12 +143,12 @@ public final class ClusterContextManagerBuilder implements ContextManagerBuilder
return new DataSourceProvidedDatabaseConfiguration(dataSources, databaseRuleConfigs);
}
- private void persistMetaData(final MetaDataPersistService metaDataPersistService, final MetaDataContexts metaDataContexts) {
+ private void persistMetaData(final MetaDataContexts metaDataContexts) {
metaDataContexts.getMetaDataMap().forEach((databaseName, schemas) -> schemas.getSchemas().forEach((schemaName, tables) -> {
if (tables.getTables().isEmpty()) {
- metaDataPersistService.getSchemaMetaDataService().persistSchema(databaseName, schemaName);
+ metaDataContexts.getMetaDataPersistService().ifPresent(optional -> optional.getSchemaMetaDataService().persistSchema(databaseName, schemaName));
} else {
- metaDataPersistService.getSchemaMetaDataService().persistTables(databaseName, schemaName, tables);
+ metaDataContexts.getMetaDataPersistService().ifPresent(optional -> optional.getSchemaMetaDataService().persistTables(databaseName, schemaName, tables));
}
}));
}