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 21d70b4b115 Use MetaDataContextManager instead of ContextManager for
the constructor of PersistServiceFacade (#31942)
21d70b4b115 is described below
commit 21d70b4b1154b2a7321f508b5420c642af6fa984
Author: Haoran Meng <[email protected]>
AuthorDate: Mon Jul 1 15:20:47 2024 +0800
Use MetaDataContextManager instead of ContextManager for the constructor of
PersistServiceFacade (#31942)
* Use MetaDataContextManager instead of ContextManager for
PersistServiceFacade
* fix issue of check style
---
.../mode/manager/ContextManager.java | 4 +-
.../mode/metadata/MetaDataContextManager.java | 40 +++++++-
.../metadata/manager/ConfigurationManager.java | 34 ++++---
.../metadata/manager/ResourceMetaDataManager.java | 14 ++-
.../mode/metadata/manager/RuleItemManager.java | 17 +++-
.../mode/service/PersistServiceFacade.java | 8 +-
.../service/persist/PersistServiceBuilder.java | 7 +-
.../mode/fixture/PersistServiceBuilderFixture.java | 4 +-
.../ClusterMetaDataManagerPersistService.java | 62 +++++++-----
.../service/ClusterPersistServiceBuilder.java | 6 +-
.../StandaloneMetaDataManagerPersistService.java | 106 +++++++++++----------
.../service/StandalonePersistServiceBuilder.java | 6 +-
12 files changed, 187 insertions(+), 121 deletions(-)
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index 9e2cc323c01..8c90ad0c660 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -79,9 +79,9 @@ public final class ContextManager implements AutoCloseable {
public ContextManager(final MetaDataContexts metaDataContexts, final
ComputeNodeInstanceContext computeNodeInstanceContext, final PersistRepository
repository) {
this.metaDataContexts = new AtomicReference<>(metaDataContexts);
this.computeNodeInstanceContext = computeNodeInstanceContext;
- persistServiceFacade = new PersistServiceFacade(repository,
computeNodeInstanceContext.getModeConfiguration(), this);
+ metaDataContextManager = new
MetaDataContextManager(this.metaDataContexts, computeNodeInstanceContext,
repository);
+ persistServiceFacade = new PersistServiceFacade(repository,
computeNodeInstanceContext.getModeConfiguration(), metaDataContextManager);
stateContext = new
StateContext(persistServiceFacade.getStatePersistService().loadClusterState().orElse(ClusterState.OK));
- metaDataContextManager = new
MetaDataContextManager(this.metaDataContexts, computeNodeInstanceContext,
persistServiceFacade);
executorEngine =
ExecutorEngine.createExecutorEngineWithSize(metaDataContexts.getMetaData().getProps().<Integer>getValue(ConfigurationPropertyKey.KERNEL_EXECUTOR_SIZE));
for (ContextManagerLifecycleListener each :
ShardingSphereServiceLoader.getServiceInstances(ContextManagerLifecycleListener.class))
{
each.onInitialized(this);
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
index 0945f7ebe6e..22ebe674dc2 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
@@ -19,12 +19,15 @@ package org.apache.shardingsphere.mode.metadata;
import lombok.Getter;
import org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContext;
+import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import
org.apache.shardingsphere.infra.metadata.database.schema.manager.GenericSchemaManager;
+import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
import org.apache.shardingsphere.mode.metadata.manager.ConfigurationManager;
import org.apache.shardingsphere.mode.metadata.manager.ResourceMetaDataManager;
import org.apache.shardingsphere.mode.metadata.manager.ResourceSwitchManager;
import org.apache.shardingsphere.mode.metadata.manager.RuleItemManager;
import
org.apache.shardingsphere.mode.metadata.manager.ShardingSphereDatabaseManager;
-import org.apache.shardingsphere.mode.service.PersistServiceFacade;
+import org.apache.shardingsphere.mode.spi.PersistRepository;
import java.util.concurrent.atomic.AtomicReference;
@@ -34,6 +37,8 @@ import java.util.concurrent.atomic.AtomicReference;
@Getter
public class MetaDataContextManager {
+ private final AtomicReference<MetaDataContexts> metaDataContexts;
+
private final ShardingSphereDatabaseManager databaseManager;
private final ConfigurationManager configurationManager;
@@ -44,12 +49,37 @@ public class MetaDataContextManager {
private final ResourceSwitchManager resourceSwitchManager;
+ private final MetaDataPersistService metaDataPersistService;
+
public MetaDataContextManager(final AtomicReference<MetaDataContexts>
metaDataContexts, final ComputeNodeInstanceContext computeNodeInstanceContext,
- final PersistServiceFacade
persistServiceFacade) {
+ final PersistRepository repository) {
+ this.metaDataContexts = metaDataContexts;
resourceSwitchManager = new ResourceSwitchManager();
databaseManager = new ShardingSphereDatabaseManager(metaDataContexts);
- configurationManager = new ConfigurationManager(metaDataContexts,
computeNodeInstanceContext, persistServiceFacade, resourceSwitchManager);
- resourceMetaDataManager = new
ResourceMetaDataManager(metaDataContexts, persistServiceFacade);
- ruleItemManager = new RuleItemManager(metaDataContexts,
persistServiceFacade, configurationManager);
+ configurationManager = new ConfigurationManager(metaDataContexts,
computeNodeInstanceContext, repository, resourceSwitchManager);
+ resourceMetaDataManager = new
ResourceMetaDataManager(metaDataContexts, repository);
+ ruleItemManager = new RuleItemManager(metaDataContexts, repository,
configurationManager);
+ metaDataPersistService = new MetaDataPersistService(repository);
+ }
+
+ /**
+ * Delete schema names.
+ *
+ * @param databaseName database name
+ * @param reloadDatabase reload database
+ * @param currentDatabase current database
+ */
+ public void deletedSchemaNames(final String databaseName, final
ShardingSphereDatabase reloadDatabase, final ShardingSphereDatabase
currentDatabase) {
+
GenericSchemaManager.getToBeDeletedSchemaNames(reloadDatabase.getSchemas(),
currentDatabase.getSchemas()).keySet()
+ .forEach(each ->
metaDataPersistService.getDatabaseMetaDataService().dropSchema(databaseName,
each));
+ }
+
+ /**
+ * Renew meta data contexts.
+ *
+ * @param metaDataContexts meta data contexts
+ */
+ public void renewMetaDataContexts(final MetaDataContexts metaDataContexts)
{
+ this.metaDataContexts.set(metaDataContexts);
}
}
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 6e0c4139b9f..f12b63963a9 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
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.mode.metadata.manager;
-import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.infra.config.database.DatabaseConfiguration;
@@ -46,7 +45,7 @@ import
org.apache.shardingsphere.metadata.factory.InternalMetaDataFactory;
import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import org.apache.shardingsphere.mode.metadata.MetaDataContextsFactory;
-import org.apache.shardingsphere.mode.service.PersistServiceFacade;
+import org.apache.shardingsphere.mode.spi.PersistRepository;
import org.apache.shardingsphere.mode.tuple.annotation.RepositoryTupleEntity;
import org.apache.shardingsphere.transaction.rule.TransactionRule;
@@ -67,7 +66,6 @@ import java.util.stream.Collectors;
/**
* Configuration context manager.
*/
-@RequiredArgsConstructor
@Slf4j
public final class ConfigurationManager {
@@ -75,10 +73,18 @@ public final class ConfigurationManager {
private final ComputeNodeInstanceContext computeNodeInstanceContext;
- private final PersistServiceFacade persistServiceFacade;
-
private final ResourceSwitchManager resourceSwitchManager;
+ private final MetaDataPersistService metaDataPersistService;
+
+ public ConfigurationManager(final AtomicReference<MetaDataContexts>
metaDataContexts, final ComputeNodeInstanceContext computeNodeInstanceContext,
+ final PersistRepository repository, final
ResourceSwitchManager resourceSwitchManager) {
+ this.metaDataContexts = metaDataContexts;
+ this.computeNodeInstanceContext = computeNodeInstanceContext;
+ this.resourceSwitchManager = resourceSwitchManager;
+ metaDataPersistService = new MetaDataPersistService(repository);
+ }
+
/**
* Register storage unit.
*
@@ -132,7 +138,7 @@ public final class ConfigurationManager {
MetaDataContexts reloadMetaDataContexts =
createMetaDataContexts(databaseName, false, switchingResource, null);
persistSchemaMetaData(databaseName, reloadMetaDataContexts,
isDropConfig);
Optional.ofNullable(reloadMetaDataContexts.getStatistics().getDatabaseData().get(databaseName))
- .ifPresent(optional ->
optional.getSchemaData().forEach((schemaName, schemaData) ->
persistServiceFacade.getMetaDataPersistService().getShardingSphereDataPersistService()
+ .ifPresent(optional ->
optional.getSchemaData().forEach((schemaName, schemaData) ->
metaDataPersistService.getShardingSphereDataPersistService()
.persist(databaseName, schemaName, schemaData,
metaDataContexts.get().getMetaData().getDatabases())));
alterSchemaMetaData(databaseName,
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
metaDataContexts.get().getMetaData().getDatabase(databaseName), isDropConfig);
metaDataContexts.set(reloadMetaDataContexts);
@@ -142,10 +148,10 @@ public final class ConfigurationManager {
private void persistSchemaMetaData(final String databaseName, final
MetaDataContexts reloadMetaDataContexts, final boolean isDropConfig) {
if (isDropConfig) {
-
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getSchemas().forEach((schemaName,
schema) ->
persistServiceFacade.getMetaDataPersistService().getDatabaseMetaDataService()
+
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getSchemas().forEach((schemaName,
schema) -> metaDataPersistService.getDatabaseMetaDataService()
.persistByDropConfiguration(reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getName(),
schemaName, schema));
} else {
-
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getSchemas().forEach((schemaName,
schema) ->
persistServiceFacade.getMetaDataPersistService().getDatabaseMetaDataService()
+
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getSchemas().forEach((schemaName,
schema) -> metaDataPersistService.getDatabaseMetaDataService()
.persistByAlterConfiguration(reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getName(),
schemaName, schema));
}
}
@@ -229,11 +235,11 @@ public final class ConfigurationManager {
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) ->
persistServiceFacade.getMetaDataPersistService().getDatabaseMetaDataService().persistByDropConfiguration(databaseName,
key, value));
+ toBeAddedSchemas.forEach((key, value) ->
metaDataPersistService.getDatabaseMetaDataService().persistByDropConfiguration(databaseName,
key, value));
} else {
- toBeAddedSchemas.forEach((key, value) ->
persistServiceFacade.getMetaDataPersistService().getDatabaseMetaDataService().persistByAlterConfiguration(databaseName,
key, value));
+ toBeAddedSchemas.forEach((key, value) ->
metaDataPersistService.getDatabaseMetaDataService().persistByAlterConfiguration(databaseName,
key, value));
}
- toBeAlterSchemas.forEach((key, value) ->
persistServiceFacade.getMetaDataPersistService().getDatabaseMetaDataService().delete(databaseName,
key, value));
+ toBeAlterSchemas.forEach((key, value) ->
metaDataPersistService.getDatabaseMetaDataService().delete(databaseName, key,
value));
}
/**
@@ -315,7 +321,7 @@ public final class ConfigurationManager {
: ruleConfigs;
DatabaseConfiguration toBeCreatedDatabaseConfig =
getDatabaseConfiguration(effectiveResourceMetaData, switchingResource,
toBeCreatedRuleConfigs);
ShardingSphereDatabase changedDatabase =
createChangedDatabase(metaDataContexts.get().getMetaData().getDatabase(databaseName).getName(),
internalLoadMetaData,
- persistServiceFacade.getMetaDataPersistService(),
toBeCreatedDatabaseConfig, metaDataContexts.get().getMetaData().getProps(),
computeNodeInstanceContext);
+ metaDataPersistService, toBeCreatedDatabaseConfig,
metaDataContexts.get().getMetaData().getProps(), computeNodeInstanceContext);
Map<String, ShardingSphereDatabase> result = new
LinkedHashMap<>(metaDataContexts.get().getMetaData().getDatabases());
result.put(databaseName.toLowerCase(), changedDatabase);
return result;
@@ -361,7 +367,7 @@ public final class ConfigurationManager {
public Map<String, ShardingSphereDatabase> newShardingSphereDatabase(final
ShardingSphereDatabase originalDatabase) {
return
Collections.singletonMap(originalDatabase.getName().toLowerCase(), new
ShardingSphereDatabase(originalDatabase.getName(),
originalDatabase.getProtocolType(),
originalDatabase.getResourceMetaData(), originalDatabase.getRuleMetaData(),
-
persistServiceFacade.getMetaDataPersistService().getDatabaseMetaDataService().loadSchemas(originalDatabase.getName())));
+
metaDataPersistService.getDatabaseMetaDataService().loadSchemas(originalDatabase.getName())));
}
/**
@@ -409,6 +415,6 @@ public final class ConfigurationManager {
}
private MetaDataContexts newMetaDataContexts(final ShardingSphereMetaData
metaData) {
- return
MetaDataContextsFactory.create(persistServiceFacade.getMetaDataPersistService(),
metaData);
+ return MetaDataContextsFactory.create(metaDataPersistService,
metaData);
}
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ResourceMetaDataManager.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ResourceMetaDataManager.java
index 59f4eb8066b..63ecef5468c 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ResourceMetaDataManager.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ResourceMetaDataManager.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.mode.metadata.manager;
import com.google.common.base.Strings;
-import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.database.DatabaseTypeEngine;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
@@ -29,10 +28,11 @@ import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSp
import
org.apache.shardingsphere.infra.rule.attribute.datanode.MutableDataNodeRuleAttribute;
import org.apache.shardingsphere.infra.rule.scope.GlobalRule;
import
org.apache.shardingsphere.infra.rule.scope.GlobalRule.GlobalRuleChangedType;
+import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import org.apache.shardingsphere.mode.metadata.MetaDataContextsFactory;
import
org.apache.shardingsphere.mode.metadata.refresher.util.TableRefreshUtils;
-import org.apache.shardingsphere.mode.service.PersistServiceFacade;
+import org.apache.shardingsphere.mode.spi.PersistRepository;
import java.util.Collections;
import java.util.Optional;
@@ -41,12 +41,16 @@ import java.util.concurrent.atomic.AtomicReference;
/**
* Resource meta data manager.
*/
-@RequiredArgsConstructor
public final class ResourceMetaDataManager {
private final AtomicReference<MetaDataContexts> metaDataContexts;
- private final PersistServiceFacade persistServiceFacade;
+ private final MetaDataPersistService metaDataPersistService;
+
+ public ResourceMetaDataManager(final AtomicReference<MetaDataContexts>
metaDataContexts, final PersistRepository repository) {
+ this.metaDataContexts = metaDataContexts;
+ metaDataPersistService = new MetaDataPersistService(repository);
+ }
/**
* Add database.
@@ -59,7 +63,7 @@ public final class ResourceMetaDataManager {
}
DatabaseType protocolType =
DatabaseTypeEngine.getProtocolType(Collections.emptyMap(),
metaDataContexts.get().getMetaData().getProps());
metaDataContexts.get().getMetaData().addDatabase(databaseName,
protocolType, metaDataContexts.get().getMetaData().getProps());
-
metaDataContexts.set(MetaDataContextsFactory.create(persistServiceFacade.getMetaDataPersistService(),
metaDataContexts.get().getMetaData()));
+
metaDataContexts.set(MetaDataContextsFactory.create(metaDataPersistService,
metaDataContexts.get().getMetaData()));
}
/**
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/RuleItemManager.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/RuleItemManager.java
index 0ca59ecb096..5f804f01488 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/RuleItemManager.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/RuleItemManager.java
@@ -22,8 +22,9 @@ import
org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
import
org.apache.shardingsphere.infra.rule.event.rule.alter.AlterRuleItemEvent;
import org.apache.shardingsphere.infra.rule.event.rule.drop.DropRuleItemEvent;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
-import org.apache.shardingsphere.mode.service.PersistServiceFacade;
+import org.apache.shardingsphere.mode.spi.PersistRepository;
import
org.apache.shardingsphere.mode.spi.RuleItemConfigurationChangedProcessor;
import java.util.concurrent.atomic.AtomicReference;
@@ -36,10 +37,16 @@ public class RuleItemManager {
private final AtomicReference<MetaDataContexts> metaDataContexts;
- private final PersistServiceFacade persistServiceFacade;
-
private final ConfigurationManager configurationManager;
+ private final MetaDataPersistService metaDataPersistService;
+
+ public RuleItemManager(final AtomicReference<MetaDataContexts>
metaDataContexts, final PersistRepository repository, final
ConfigurationManager configurationManager) {
+ this.metaDataContexts = metaDataContexts;
+ this.configurationManager = configurationManager;
+ metaDataPersistService = new MetaDataPersistService(repository);
+ }
+
/**
* Alter with rule item.
*
@@ -47,12 +54,12 @@ public class RuleItemManager {
*/
@SuppressWarnings({"rawtypes", "unchecked", "unused"})
public void alterRuleItem(final AlterRuleItemEvent event) {
- if
(!event.getActiveVersion().equals(persistServiceFacade.getMetaDataPersistService().getMetaDataVersionPersistService()
+ if
(!event.getActiveVersion().equals(metaDataPersistService.getMetaDataVersionPersistService()
.getActiveVersionByFullPath(event.getActiveVersionKey()))) {
return;
}
RuleItemConfigurationChangedProcessor processor =
TypedSPILoader.getService(RuleItemConfigurationChangedProcessor.class,
event.getType());
- String yamlContent =
persistServiceFacade.getMetaDataPersistService().getMetaDataVersionPersistService()
+ String yamlContent =
metaDataPersistService.getMetaDataVersionPersistService()
.getVersionPathByActiveVersion(event.getActiveVersionKey(),
event.getActiveVersion());
String databaseName = event.getDatabaseName();
RuleConfiguration currentRuleConfig =
processor.findRuleConfiguration(metaDataContexts.get().getMetaData().getDatabase(databaseName));
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/service/PersistServiceFacade.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/service/PersistServiceFacade.java
index 4bc87d754a4..b8ff974d472 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/service/PersistServiceFacade.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/service/PersistServiceFacade.java
@@ -21,13 +21,13 @@ import lombok.Getter;
import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
-import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.mode.metadata.MetaDataContextManager;
import
org.apache.shardingsphere.mode.service.persist.ComputeNodePersistService;
+import
org.apache.shardingsphere.mode.service.persist.ListenerAssistedPersistService;
import
org.apache.shardingsphere.mode.service.persist.MetaDataManagerPersistService;
import org.apache.shardingsphere.mode.service.persist.PersistServiceBuilder;
import org.apache.shardingsphere.mode.service.persist.ProcessPersistService;
import
org.apache.shardingsphere.mode.service.persist.QualifiedDataSourceStatePersistService;
-import
org.apache.shardingsphere.mode.service.persist.ListenerAssistedPersistService;
import
org.apache.shardingsphere.mode.service.pojo.ShardingSphereSchemaDataAlteredPOJO;
import org.apache.shardingsphere.mode.spi.PersistRepository;
import org.apache.shardingsphere.mode.state.StatePersistService;
@@ -54,14 +54,14 @@ public final class PersistServiceFacade {
private final QualifiedDataSourceStatePersistService
qualifiedDataSourceStatePersistService;
- public PersistServiceFacade(final PersistRepository repository, final
ModeConfiguration modeConfiguration, final ContextManager contextManager) {
+ public PersistServiceFacade(final PersistRepository repository, final
ModeConfiguration modeConfiguration, final MetaDataContextManager
metaDataContextManager) {
this.repository = repository;
metaDataPersistService = new MetaDataPersistService(repository);
computeNodePersistService = new ComputeNodePersistService(repository);
statePersistService = new StatePersistService(repository);
qualifiedDataSourceStatePersistService = new
QualifiedDataSourceStatePersistService(repository);
PersistServiceBuilder persistServiceBuilder =
TypedSPILoader.getService(PersistServiceBuilder.class,
modeConfiguration.getType());
- metaDataManagerPersistService =
persistServiceBuilder.buildMetaDataManagerPersistService(contextManager);
+ metaDataManagerPersistService =
persistServiceBuilder.buildMetaDataManagerPersistService(repository,
metaDataContextManager);
processPersistService =
persistServiceBuilder.buildProcessPersistService(repository);
listenerAssistedPersistService = new
ListenerAssistedPersistService(repository);
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/service/persist/PersistServiceBuilder.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/service/persist/PersistServiceBuilder.java
index 53abde32c4c..72b5da561c7 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/service/persist/PersistServiceBuilder.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/service/persist/PersistServiceBuilder.java
@@ -18,7 +18,7 @@
package org.apache.shardingsphere.mode.service.persist;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;
-import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.mode.metadata.MetaDataContextManager;
import org.apache.shardingsphere.mode.spi.PersistRepository;
/**
@@ -29,10 +29,11 @@ public interface PersistServiceBuilder extends TypedSPI {
/**
* Build meta data manager persist service.
*
- * @param contextManager context manager
+ * @param repository persist repository
+ * @param metaDataContextManager meta data context manager
* @return meta data manager persist service
*/
- MetaDataManagerPersistService
buildMetaDataManagerPersistService(ContextManager contextManager);
+ MetaDataManagerPersistService
buildMetaDataManagerPersistService(PersistRepository repository,
MetaDataContextManager metaDataContextManager);
/**
* Build process persist service.
diff --git
a/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/PersistServiceBuilderFixture.java
b/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/PersistServiceBuilderFixture.java
index a400e9718e5..126471a0796 100644
---
a/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/PersistServiceBuilderFixture.java
+++
b/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/PersistServiceBuilderFixture.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.mode.fixture;
-import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.mode.metadata.MetaDataContextManager;
import
org.apache.shardingsphere.mode.service.persist.MetaDataManagerPersistService;
import org.apache.shardingsphere.mode.service.persist.PersistServiceBuilder;
import org.apache.shardingsphere.mode.service.persist.ProcessPersistService;
@@ -26,7 +26,7 @@ import org.apache.shardingsphere.mode.spi.PersistRepository;
public final class PersistServiceBuilderFixture implements
PersistServiceBuilder {
@Override
- public MetaDataManagerPersistService
buildMetaDataManagerPersistService(final ContextManager contextManager) {
+ public MetaDataManagerPersistService
buildMetaDataManagerPersistService(final PersistRepository repository, final
MetaDataContextManager metaDataContextManager) {
return null;
}
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/service/ClusterMetaDataManagerPersistService.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/service/ClusterMetaDataManagerPersistService.java
index e9a9fcc9962..65e5a06d863 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/service/ClusterMetaDataManagerPersistService.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/service/ClusterMetaDataManagerPersistService.java
@@ -26,12 +26,15 @@ 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.MetaDataPersistService;
import
org.apache.shardingsphere.metadata.persist.service.config.database.DataSourceUnitPersistService;
import
org.apache.shardingsphere.metadata.persist.service.database.DatabaseMetaDataPersistService;
-import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.mode.metadata.MetaDataContextManager;
import org.apache.shardingsphere.mode.service.enums.ListenerAssistedEnum;
+import
org.apache.shardingsphere.mode.service.persist.ListenerAssistedPersistService;
import
org.apache.shardingsphere.mode.service.persist.MetaDataManagerPersistService;
import org.apache.shardingsphere.mode.service.pojo.ListenerAssistedPOJO;
+import org.apache.shardingsphere.mode.spi.PersistRepository;
import org.apache.shardingsphere.single.config.SingleRuleConfiguration;
import java.util.Collection;
@@ -46,33 +49,42 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
public final class ClusterMetaDataManagerPersistService implements
MetaDataManagerPersistService {
- private final ContextManager contextManager;
+ private final MetaDataPersistService metaDataPersistService;
+
+ private final ListenerAssistedPersistService
listenerAssistedPersistService;
+
+ private final MetaDataContextManager metaDataContextManager;
+
+ public ClusterMetaDataManagerPersistService(final PersistRepository
repository, final MetaDataContextManager metaDataContextManager) {
+ metaDataPersistService = new MetaDataPersistService(repository);
+ listenerAssistedPersistService = new
ListenerAssistedPersistService(repository);
+ this.metaDataContextManager = metaDataContextManager;
+ }
@Override
public void createDatabase(final String databaseName) {
-
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService().addDatabase(databaseName);
-
contextManager.getPersistServiceFacade().getListenerAssistedPersistService().persistDatabaseNameListenerAssisted(new
ListenerAssistedPOJO(databaseName, ListenerAssistedEnum.CREATE_DATABASE));
+
metaDataPersistService.getDatabaseMetaDataService().addDatabase(databaseName);
+ listenerAssistedPersistService.persistDatabaseNameListenerAssisted(new
ListenerAssistedPOJO(databaseName, ListenerAssistedEnum.CREATE_DATABASE));
}
@Override
public void dropDatabase(final String databaseName) {
- String droppedDatabaseName =
contextManager.getDatabase(databaseName).getName();
-
contextManager.getPersistServiceFacade().getListenerAssistedPersistService()
- .persistDatabaseNameListenerAssisted(new
ListenerAssistedPOJO(droppedDatabaseName, ListenerAssistedEnum.DROP_DATABASE));
-
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService().dropDatabase(droppedDatabaseName);
+ String droppedDatabaseName =
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName).getName();
+ listenerAssistedPersistService.persistDatabaseNameListenerAssisted(new
ListenerAssistedPOJO(droppedDatabaseName, ListenerAssistedEnum.DROP_DATABASE));
+
metaDataPersistService.getDatabaseMetaDataService().dropDatabase(droppedDatabaseName);
}
@Override
public void createSchema(final String databaseName, final String
schemaName) {
-
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService().addSchema(databaseName,
schemaName);
+
metaDataPersistService.getDatabaseMetaDataService().addSchema(databaseName,
schemaName);
}
@Override
public void alterSchema(final AlterSchemaPOJO alterSchemaPOJO) {
String databaseName = alterSchemaPOJO.getDatabaseName();
String schemaName = alterSchemaPOJO.getSchemaName();
- ShardingSphereSchema schema =
contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getSchema(schemaName);
- DatabaseMetaDataPersistService databaseMetaDataService =
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService();
+ ShardingSphereSchema schema =
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName).getSchema(schemaName);
+ DatabaseMetaDataPersistService databaseMetaDataService =
metaDataPersistService.getDatabaseMetaDataService();
databaseMetaDataService.persistByAlterConfiguration(databaseName,
alterSchemaPOJO.getRenameSchemaName(), schema);
databaseMetaDataService.getViewMetaDataPersistService().persist(databaseName,
alterSchemaPOJO.getRenameSchemaName(), schema.getViews());
databaseMetaDataService.dropSchema(databaseName, schemaName);
@@ -80,7 +92,7 @@ public final class ClusterMetaDataManagerPersistService
implements MetaDataManag
@Override
public void dropSchema(final String databaseName, final Collection<String>
schemaNames) {
- DatabaseMetaDataPersistService databaseMetaDataService =
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService();
+ DatabaseMetaDataPersistService databaseMetaDataService =
metaDataPersistService.getDatabaseMetaDataService();
schemaNames.forEach(each ->
databaseMetaDataService.dropSchema(databaseName, each));
}
@@ -90,7 +102,7 @@ public final class ClusterMetaDataManagerPersistService
implements MetaDataManag
String schemaName = alterSchemaMetaDataPOJO.getSchemaName();
Map<String, ShardingSphereTable> tables =
alterSchemaMetaDataPOJO.getAlteredTables().stream().collect(Collectors.toMap(ShardingSphereTable::getName,
table -> table));
Map<String, ShardingSphereView> views =
alterSchemaMetaDataPOJO.getAlteredViews().stream().collect(Collectors.toMap(ShardingSphereView::getName,
view -> view));
- DatabaseMetaDataPersistService databaseMetaDataService =
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService();
+ DatabaseMetaDataPersistService databaseMetaDataService =
metaDataPersistService.getDatabaseMetaDataService();
databaseMetaDataService.getTableMetaDataPersistService().persist(databaseName,
schemaName, tables);
databaseMetaDataService.getViewMetaDataPersistService().persist(databaseName,
schemaName, views);
alterSchemaMetaDataPOJO.getDroppedTables().forEach(each ->
databaseMetaDataService.getTableMetaDataPersistService().delete(databaseName,
schemaName, each));
@@ -99,39 +111,39 @@ public final class ClusterMetaDataManagerPersistService
implements MetaDataManag
@Override
public void registerStorageUnits(final String databaseName, final
Map<String, DataSourcePoolProperties> toBeRegisteredProps) {
-
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDataSourceUnitService().persistConfigurations(databaseName,
toBeRegisteredProps);
+
metaDataPersistService.getDataSourceUnitService().persistConfigurations(databaseName,
toBeRegisteredProps);
}
@Override
public void alterStorageUnits(final String databaseName, final Map<String,
DataSourcePoolProperties> toBeUpdatedProps) {
- DataSourceUnitPersistService dataSourceService =
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDataSourceUnitService();
-
contextManager.getPersistServiceFacade().getMetaDataPersistService().getMetaDataVersionPersistService()
+ DataSourceUnitPersistService dataSourceService =
metaDataPersistService.getDataSourceUnitService();
+ metaDataPersistService.getMetaDataVersionPersistService()
.switchActiveVersion(dataSourceService.persistConfigurations(databaseName,
toBeUpdatedProps));
}
@Override
public void unregisterStorageUnits(final String databaseName, final
Collection<String> toBeDroppedStorageUnitNames) {
for (String each : getToBeDroppedResourceNames(databaseName,
toBeDroppedStorageUnitNames)) {
-
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDataSourceUnitService().delete(databaseName,
each);
+
metaDataPersistService.getDataSourceUnitService().delete(databaseName, each);
}
}
private Collection<String> getToBeDroppedResourceNames(final String
databaseName, final Collection<String> toBeDroppedResourceNames) {
- Map<String, DataSourcePoolProperties> propsMap =
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDataSourceUnitService().load(databaseName);
+ Map<String, DataSourcePoolProperties> propsMap =
metaDataPersistService.getDataSourceUnitService().load(databaseName);
return
toBeDroppedResourceNames.stream().filter(propsMap::containsKey).collect(Collectors.toList());
}
@Override
public void alterSingleRuleConfiguration(final String databaseName, final
Collection<RuleConfiguration> ruleConfigs) {
ruleConfigs.removeIf(each ->
!each.getClass().isAssignableFrom(SingleRuleConfiguration.class));
-
contextManager.getPersistServiceFacade().getMetaDataPersistService().getMetaDataVersionPersistService()
-
.switchActiveVersion(contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseRulePersistService().persistConfigurations(databaseName,
ruleConfigs));
+ metaDataPersistService.getMetaDataVersionPersistService()
+
.switchActiveVersion(metaDataPersistService.getDatabaseRulePersistService().persistConfigurations(databaseName,
ruleConfigs));
}
@Override
public Collection<MetaDataVersion> alterRuleConfiguration(final String
databaseName, final RuleConfiguration toBeAlteredRuleConfig) {
if (null != toBeAlteredRuleConfig) {
- return
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseRulePersistService()
+ return metaDataPersistService.getDatabaseRulePersistService()
.persistConfigurations(databaseName,
Collections.singleton(toBeAlteredRuleConfig));
}
return Collections.emptyList();
@@ -140,22 +152,22 @@ public final class ClusterMetaDataManagerPersistService
implements MetaDataManag
@Override
public void removeRuleConfigurationItem(final String databaseName, final
RuleConfiguration toBeRemovedRuleConfig) {
if (null != toBeRemovedRuleConfig) {
-
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseRulePersistService().deleteConfigurations(databaseName,
Collections.singleton(toBeRemovedRuleConfig));
+
metaDataPersistService.getDatabaseRulePersistService().deleteConfigurations(databaseName,
Collections.singleton(toBeRemovedRuleConfig));
}
}
@Override
public void removeRuleConfiguration(final String databaseName, final
String ruleName) {
-
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseRulePersistService().delete(databaseName,
ruleName);
+
metaDataPersistService.getDatabaseRulePersistService().delete(databaseName,
ruleName);
}
@Override
public void alterGlobalRuleConfiguration(final RuleConfiguration
toBeAlteredRuleConfig) {
-
contextManager.getPersistServiceFacade().getMetaDataPersistService().getGlobalRuleService().persist(Collections.singleton(toBeAlteredRuleConfig));
+
metaDataPersistService.getGlobalRuleService().persist(Collections.singleton(toBeAlteredRuleConfig));
}
@Override
public void alterProperties(final Properties props) {
-
contextManager.getPersistServiceFacade().getMetaDataPersistService().getPropsService().persist(props);
+ metaDataPersistService.getPropsService().persist(props);
}
}
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/service/ClusterPersistServiceBuilder.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/service/ClusterPersistServiceBuilder.java
index dc06995b15e..7357061c023 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/service/ClusterPersistServiceBuilder.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/service/ClusterPersistServiceBuilder.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.mode.manager.cluster.service;
-import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.mode.metadata.MetaDataContextManager;
import
org.apache.shardingsphere.mode.service.persist.MetaDataManagerPersistService;
import org.apache.shardingsphere.mode.service.persist.PersistServiceBuilder;
import org.apache.shardingsphere.mode.service.persist.ProcessPersistService;
@@ -29,8 +29,8 @@ import org.apache.shardingsphere.mode.spi.PersistRepository;
public final class ClusterPersistServiceBuilder implements
PersistServiceBuilder {
@Override
- public MetaDataManagerPersistService
buildMetaDataManagerPersistService(final ContextManager contextManager) {
- return new ClusterMetaDataManagerPersistService(contextManager);
+ public MetaDataManagerPersistService
buildMetaDataManagerPersistService(final PersistRepository repository, final
MetaDataContextManager metaDataContextManager) {
+ return new ClusterMetaDataManagerPersistService(repository,
metaDataContextManager);
}
@Override
diff --git
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/service/StandaloneMetaDataManagerPersistService.java
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/service/StandaloneMetaDataManagerPersistService.java
index 80e1ece543d..b234f962e49 100644
---
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/service/StandaloneMetaDataManagerPersistService.java
+++
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/service/StandaloneMetaDataManagerPersistService.java
@@ -35,17 +35,19 @@ import
org.apache.shardingsphere.infra.rule.event.rule.drop.DropRuleItemEvent;
import org.apache.shardingsphere.infra.rule.scope.GlobalRule;
import
org.apache.shardingsphere.infra.rule.scope.GlobalRule.GlobalRuleChangedType;
import
org.apache.shardingsphere.infra.spi.type.ordered.cache.OrderedServicesCache;
+import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
import
org.apache.shardingsphere.metadata.persist.service.config.database.DataSourceUnitPersistService;
import
org.apache.shardingsphere.metadata.persist.service.database.DatabaseMetaDataPersistService;
import org.apache.shardingsphere.mode.event.DataChangedEvent;
import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
-import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.mode.metadata.MetaDataContextManager;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import
org.apache.shardingsphere.mode.metadata.builder.RuleConfigurationEventBuilder;
import org.apache.shardingsphere.mode.metadata.manager.ConfigurationManager;
import org.apache.shardingsphere.mode.metadata.manager.SwitchingResource;
import
org.apache.shardingsphere.mode.metadata.refresher.util.TableRefreshUtils;
import
org.apache.shardingsphere.mode.service.persist.MetaDataManagerPersistService;
+import org.apache.shardingsphere.mode.spi.PersistRepository;
import org.apache.shardingsphere.single.config.SingleRuleConfiguration;
import java.sql.SQLException;
@@ -66,44 +68,47 @@ public final class StandaloneMetaDataManagerPersistService
implements MetaDataMa
private final RuleConfigurationEventBuilder ruleConfigurationEventBuilder
= new RuleConfigurationEventBuilder();
- private final ContextManager contextManager;
+ private final MetaDataPersistService metaDataPersistService;
- public StandaloneMetaDataManagerPersistService(final ContextManager
contextManager) {
- this.contextManager = contextManager;
+ private final MetaDataContextManager metaDataContextManager;
+
+ public StandaloneMetaDataManagerPersistService(final PersistRepository
repository, final MetaDataContextManager metaDataContextManager) {
+ metaDataPersistService = new MetaDataPersistService(repository);
+ this.metaDataContextManager = metaDataContextManager;
}
@Override
public void createDatabase(final String databaseName) {
-
contextManager.getMetaDataContextManager().getResourceMetaDataManager().addDatabase(databaseName);
-
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService().addDatabase(databaseName);
+
metaDataContextManager.getResourceMetaDataManager().addDatabase(databaseName);
+
metaDataPersistService.getDatabaseMetaDataService().addDatabase(databaseName);
clearServiceCache();
}
@Override
public void dropDatabase(final String databaseName) {
-
contextManager.getMetaDataContextManager().getResourceMetaDataManager().dropDatabase(databaseName);
-
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService().dropDatabase(databaseName);
+
metaDataContextManager.getResourceMetaDataManager().dropDatabase(databaseName);
+
metaDataPersistService.getDatabaseMetaDataService().dropDatabase(databaseName);
clearServiceCache();
}
@Override
public void createSchema(final String databaseName, final String
schemaName) {
ShardingSphereSchema schema = new ShardingSphereSchema();
- ShardingSphereMetaData metaData =
contextManager.getMetaDataContexts().getMetaData();
+ ShardingSphereMetaData metaData =
metaDataContextManager.getMetaDataContexts().get().getMetaData();
ShardingSphereDatabase database = metaData.getDatabase(databaseName);
database.addSchema(schemaName, schema);
metaData.getGlobalRuleMetaData().getRules().forEach(each ->
((GlobalRule) each).refresh(metaData.getDatabases(),
GlobalRuleChangedType.SCHEMA_CHANGED));
-
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService().persistByAlterConfiguration(databaseName,
schemaName, schema);
+
metaDataPersistService.getDatabaseMetaDataService().persistByAlterConfiguration(databaseName,
schemaName, schema);
}
@Override
public void alterSchema(final AlterSchemaPOJO alterSchemaPOJO) {
- ShardingSphereMetaData metaData =
contextManager.getMetaDataContexts().getMetaData();
+ ShardingSphereMetaData metaData =
metaDataContextManager.getMetaDataContexts().get().getMetaData();
ShardingSphereDatabase database =
metaData.getDatabase(alterSchemaPOJO.getDatabaseName());
putSchemaMetaData(database, alterSchemaPOJO.getSchemaName(),
alterSchemaPOJO.getRenameSchemaName(),
alterSchemaPOJO.getLogicDataSourceName());
removeSchemaMetaData(database, alterSchemaPOJO.getSchemaName());
metaData.getGlobalRuleMetaData().getRules().forEach(each ->
((GlobalRule) each).refresh(metaData.getDatabases(),
GlobalRuleChangedType.SCHEMA_CHANGED));
- DatabaseMetaDataPersistService databaseMetaDataService =
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService();
+ DatabaseMetaDataPersistService databaseMetaDataService =
metaDataPersistService.getDatabaseMetaDataService();
databaseMetaDataService.persistByAlterConfiguration(alterSchemaPOJO.getDatabaseName(),
alterSchemaPOJO.getRenameSchemaName(),
database.getSchema(alterSchemaPOJO.getRenameSchemaName()));
databaseMetaDataService.getViewMetaDataPersistService().persist(alterSchemaPOJO.getDatabaseName(),
alterSchemaPOJO.getRenameSchemaName(),
database.getSchema(alterSchemaPOJO.getRenameSchemaName()).getViews());
@@ -185,7 +190,7 @@ public final class StandaloneMetaDataManagerPersistService
implements MetaDataMa
public void dropSchema(final String databaseName, final Collection<String>
schemaNames) {
Collection<String> tobeRemovedTables = new LinkedList<>();
Collection<String> tobeRemovedSchemas = new LinkedList<>();
- ShardingSphereMetaData metaData =
contextManager.getMetaDataContexts().getMetaData();
+ ShardingSphereMetaData metaData =
metaDataContextManager.getMetaDataContexts().get().getMetaData();
ShardingSphereDatabase database = metaData.getDatabase(databaseName);
for (String each : schemaNames) {
ShardingSphereSchema schema = new
ShardingSphereSchema(database.getSchema(each).getTables(),
database.getSchema(each).getViews());
@@ -201,14 +206,14 @@ public final class
StandaloneMetaDataManagerPersistService implements MetaDataMa
public void alterSchemaMetaData(final AlterSchemaMetaDataPOJO
alterSchemaMetaDataPOJO) {
String databaseName = alterSchemaMetaDataPOJO.getDatabaseName();
String schemaName = alterSchemaMetaDataPOJO.getSchemaName();
- ShardingSphereMetaData metaData =
contextManager.getMetaDataContexts().getMetaData();
+ ShardingSphereMetaData metaData =
metaDataContextManager.getMetaDataContexts().get().getMetaData();
ShardingSphereDatabase database = metaData.getDatabase(databaseName);
Map<String, ShardingSphereTable> tables =
alterSchemaMetaDataPOJO.getAlteredTables().stream().collect(Collectors.toMap(ShardingSphereTable::getName,
table -> table));
Map<String, ShardingSphereView> views =
alterSchemaMetaDataPOJO.getAlteredViews().stream().collect(Collectors.toMap(ShardingSphereView::getName,
view -> view));
addDataNode(database,
alterSchemaMetaDataPOJO.getLogicDataSourceName(), schemaName, tables, views);
removeDataNode(database, schemaName,
alterSchemaMetaDataPOJO.getDroppedTables(),
alterSchemaMetaDataPOJO.getDroppedViews());
metaData.getGlobalRuleMetaData().getRules().forEach(each ->
((GlobalRule) each).refresh(metaData.getDatabases(),
GlobalRuleChangedType.SCHEMA_CHANGED));
- DatabaseMetaDataPersistService databaseMetaDataService =
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService();
+ DatabaseMetaDataPersistService databaseMetaDataService =
metaDataPersistService.getDatabaseMetaDataService();
databaseMetaDataService.getTableMetaDataPersistService().persist(databaseName,
schemaName, tables);
databaseMetaDataService.getViewMetaDataPersistService().persist(databaseName,
schemaName, views);
alterSchemaMetaDataPOJO.getDroppedTables().forEach(each ->
databaseMetaDataService.getTableMetaDataPersistService().delete(databaseName,
schemaName, each));
@@ -217,31 +222,31 @@ public final class
StandaloneMetaDataManagerPersistService implements MetaDataMa
@Override
public void registerStorageUnits(final String databaseName, final
Map<String, DataSourcePoolProperties> toBeRegisteredProps) throws SQLException {
- SwitchingResource switchingResource =
contextManager.getMetaDataContextManager().getResourceSwitchManager().registerStorageUnit(contextManager.getMetaDataContexts()
+ SwitchingResource switchingResource =
metaDataContextManager.getResourceSwitchManager().registerStorageUnit(metaDataContextManager.getMetaDataContexts().get()
.getMetaData().getDatabase(databaseName).getResourceMetaData(),
toBeRegisteredProps);
-
contextManager.getMetaDataContexts().getMetaData().getDatabases().putAll(contextManager.getMetaDataContextManager().getConfigurationManager()
+
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabases().putAll(metaDataContextManager.getConfigurationManager()
.createChangedDatabases(databaseName, false,
switchingResource, null));
-
contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getRules()
- .forEach(each -> ((GlobalRule)
each).refresh(contextManager.getMetaDataContexts().getMetaData().getDatabases(),
GlobalRuleChangedType.DATABASE_CHANGED));
-
contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getSchemas()
- .forEach((schemaName, schema) ->
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseMetaDataService()
-
.persistByAlterConfiguration(contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getName(),
schemaName, schema));
- DataSourceUnitPersistService dataSourceService =
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDataSourceUnitService();
-
contextManager.getPersistServiceFacade().getMetaDataPersistService().getMetaDataVersionPersistService()
+
metaDataContextManager.getMetaDataContexts().get().getMetaData().getGlobalRuleMetaData().getRules()
+ .forEach(each -> ((GlobalRule)
each).refresh(metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabases(),
GlobalRuleChangedType.DATABASE_CHANGED));
+
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName).getSchemas()
+ .forEach((schemaName, schema) ->
metaDataPersistService.getDatabaseMetaDataService()
+
.persistByAlterConfiguration(metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName).getName(),
schemaName, schema));
+ DataSourceUnitPersistService dataSourceService =
metaDataPersistService.getDataSourceUnitService();
+ metaDataPersistService.getMetaDataVersionPersistService()
.switchActiveVersion(dataSourceService.persistConfigurations(databaseName,
toBeRegisteredProps));
clearServiceCache();
}
@Override
public void alterStorageUnits(final String databaseName, final Map<String,
DataSourcePoolProperties> toBeUpdatedProps) throws SQLException {
- SwitchingResource switchingResource =
contextManager.getMetaDataContextManager().getResourceSwitchManager().alterStorageUnit(contextManager.getMetaDataContexts().getMetaData()
+ SwitchingResource switchingResource =
metaDataContextManager.getResourceSwitchManager().alterStorageUnit(metaDataContextManager.getMetaDataContexts().get().getMetaData()
.getDatabase(databaseName).getResourceMetaData(),
toBeUpdatedProps);
-
contextManager.getMetaDataContexts().getMetaData().getDatabases().putAll(contextManager.getMetaDataContextManager().getConfigurationManager()
+
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabases().putAll(metaDataContextManager.getConfigurationManager()
.createChangedDatabases(databaseName, true, switchingResource,
null));
-
contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getRules()
- .forEach(each -> ((GlobalRule)
each).refresh(contextManager.getMetaDataContexts().getMetaData().getDatabases(),
GlobalRuleChangedType.DATABASE_CHANGED));
- DataSourceUnitPersistService dataSourceService =
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDataSourceUnitService();
-
contextManager.getPersistServiceFacade().getMetaDataPersistService().getMetaDataVersionPersistService()
+
metaDataContextManager.getMetaDataContexts().get().getMetaData().getGlobalRuleMetaData().getRules()
+ .forEach(each -> ((GlobalRule)
each).refresh(metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabases(),
GlobalRuleChangedType.DATABASE_CHANGED));
+ DataSourceUnitPersistService dataSourceService =
metaDataPersistService.getDataSourceUnitService();
+ metaDataPersistService.getMetaDataVersionPersistService()
.switchActiveVersion(dataSourceService.persistConfigurations(databaseName,
toBeUpdatedProps));
switchingResource.closeStaleDataSources();
clearServiceCache();
@@ -249,14 +254,15 @@ public final class
StandaloneMetaDataManagerPersistService implements MetaDataMa
@Override
public void unregisterStorageUnits(final String databaseName, final
Collection<String> toBeDroppedStorageUnitNames) throws SQLException {
- SwitchingResource switchingResource =
contextManager.getMetaDataContextManager().getResourceSwitchManager().unregisterStorageUnit(contextManager.getMetaDataContexts().getMetaData()
+ SwitchingResource switchingResource =
metaDataContextManager.getResourceSwitchManager().unregisterStorageUnit(metaDataContextManager.getMetaDataContexts().get().getMetaData()
.getDatabase(databaseName).getResourceMetaData(),
toBeDroppedStorageUnitNames);
- ConfigurationManager configurationManager =
contextManager.getMetaDataContextManager().getConfigurationManager();
+ ConfigurationManager configurationManager =
metaDataContextManager.getConfigurationManager();
MetaDataContexts reloadMetaDataContexts =
configurationManager.createMetaDataContexts(databaseName, false,
switchingResource, null);
configurationManager.alterSchemaMetaData(databaseName,
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
-
contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName),
true);
- contextManager.deletedSchemaNames(databaseName,
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName));
- contextManager.renewMetaDataContexts(reloadMetaDataContexts);
+
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName),
true);
+ metaDataContextManager.deletedSchemaNames(databaseName,
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
+
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName));
+ metaDataContextManager.renewMetaDataContexts(reloadMetaDataContexts);
switchingResource.closeStaleDataSources();
clearServiceCache();
}
@@ -264,23 +270,23 @@ public final class
StandaloneMetaDataManagerPersistService implements MetaDataMa
@Override
public void alterSingleRuleConfiguration(final String databaseName, final
Collection<RuleConfiguration> ruleConfigs) {
ruleConfigs.removeIf(each ->
!each.getClass().isAssignableFrom(SingleRuleConfiguration.class));
- Collection<MetaDataVersion> metaDataVersions =
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseRulePersistService()
-
.persistConfigurations(contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getName(),
ruleConfigs);
-
contextManager.getPersistServiceFacade().getMetaDataPersistService().getMetaDataVersionPersistService().switchActiveVersion(metaDataVersions);
-
contextManager.getMetaDataContextManager().getConfigurationManager().alterRuleConfiguration(databaseName,
ruleConfigs.iterator().next());
+ Collection<MetaDataVersion> metaDataVersions =
metaDataPersistService.getDatabaseRulePersistService()
+
.persistConfigurations(metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName).getName(),
ruleConfigs);
+
metaDataPersistService.getMetaDataVersionPersistService().switchActiveVersion(metaDataVersions);
+
metaDataContextManager.getConfigurationManager().alterRuleConfiguration(databaseName,
ruleConfigs.iterator().next());
clearServiceCache();
}
@Override
public Collection<MetaDataVersion> alterRuleConfiguration(final String
databaseName, final RuleConfiguration toBeAlteredRuleConfig) {
if (null != toBeAlteredRuleConfig) {
- Collection<MetaDataVersion> metaDataVersions =
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseRulePersistService()
-
.persistConfigurations(contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getName(),
Collections.singletonList(toBeAlteredRuleConfig));
-
contextManager.getPersistServiceFacade().getMetaDataPersistService().getMetaDataVersionPersistService().switchActiveVersion(metaDataVersions);
+ Collection<MetaDataVersion> metaDataVersions =
metaDataPersistService.getDatabaseRulePersistService()
+
.persistConfigurations(metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName).getName(),
Collections.singletonList(toBeAlteredRuleConfig));
+
metaDataPersistService.getMetaDataVersionPersistService().switchActiveVersion(metaDataVersions);
for (MetaDataVersion each : metaDataVersions) {
Optional<GovernanceEvent> ruleItemEvent =
buildAlterRuleItemEvent(databaseName, each, Type.UPDATED);
if (ruleItemEvent.isPresent() && ruleItemEvent.get()
instanceof AlterRuleItemEvent) {
-
contextManager.getMetaDataContextManager().getRuleItemManager().alterRuleItem((AlterRuleItemEvent)
ruleItemEvent.get());
+
metaDataContextManager.getRuleItemManager().alterRuleItem((AlterRuleItemEvent)
ruleItemEvent.get());
}
}
clearServiceCache();
@@ -295,12 +301,12 @@ public final class
StandaloneMetaDataManagerPersistService implements MetaDataMa
@Override
public void removeRuleConfigurationItem(final String databaseName, final
RuleConfiguration toBeRemovedRuleConfig) {
if (null != toBeRemovedRuleConfig) {
- Collection<MetaDataVersion> metaDataVersions =
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseRulePersistService()
+ Collection<MetaDataVersion> metaDataVersions =
metaDataPersistService.getDatabaseRulePersistService()
.deleteConfigurations(databaseName,
Collections.singleton(toBeRemovedRuleConfig));
for (MetaDataVersion metaDataVersion : metaDataVersions) {
Optional<GovernanceEvent> ruleItemEvent =
buildAlterRuleItemEvent(databaseName, metaDataVersion, Type.DELETED);
if (ruleItemEvent.isPresent() && ruleItemEvent.get()
instanceof DropRuleItemEvent) {
-
contextManager.getMetaDataContextManager().getRuleItemManager().dropRuleItem((DropRuleItemEvent)
ruleItemEvent.get());
+
metaDataContextManager.getRuleItemManager().dropRuleItem((DropRuleItemEvent)
ruleItemEvent.get());
}
}
clearServiceCache();
@@ -309,21 +315,21 @@ public final class
StandaloneMetaDataManagerPersistService implements MetaDataMa
@Override
public void removeRuleConfiguration(final String databaseName, final
String ruleName) {
-
contextManager.getPersistServiceFacade().getMetaDataPersistService().getDatabaseRulePersistService().delete(databaseName,
ruleName);
+
metaDataPersistService.getDatabaseRulePersistService().delete(databaseName,
ruleName);
clearServiceCache();
}
@Override
public void alterGlobalRuleConfiguration(final RuleConfiguration
toBeAlteredRuleConfig) {
-
contextManager.getMetaDataContextManager().getConfigurationManager().alterGlobalRuleConfiguration(toBeAlteredRuleConfig);
-
contextManager.getPersistServiceFacade().getMetaDataPersistService().getGlobalRuleService().persist(Collections.singleton(toBeAlteredRuleConfig));
+
metaDataContextManager.getConfigurationManager().alterGlobalRuleConfiguration(toBeAlteredRuleConfig);
+
metaDataPersistService.getGlobalRuleService().persist(Collections.singleton(toBeAlteredRuleConfig));
clearServiceCache();
}
@Override
public void alterProperties(final Properties props) {
-
contextManager.getMetaDataContextManager().getConfigurationManager().alterProperties(props);
-
contextManager.getPersistServiceFacade().getMetaDataPersistService().getPropsService().persist(props);
+
metaDataContextManager.getConfigurationManager().alterProperties(props);
+ metaDataPersistService.getPropsService().persist(props);
clearServiceCache();
}
diff --git
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/service/StandalonePersistServiceBuilder.java
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/service/StandalonePersistServiceBuilder.java
index 1e7e2efff12..f93e83cf8c3 100644
---
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/service/StandalonePersistServiceBuilder.java
+++
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/service/StandalonePersistServiceBuilder.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.mode.manager.standalone.service;
-import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.mode.metadata.MetaDataContextManager;
import
org.apache.shardingsphere.mode.service.persist.MetaDataManagerPersistService;
import org.apache.shardingsphere.mode.service.persist.PersistServiceBuilder;
import org.apache.shardingsphere.mode.service.persist.ProcessPersistService;
@@ -29,8 +29,8 @@ import org.apache.shardingsphere.mode.spi.PersistRepository;
public final class StandalonePersistServiceBuilder implements
PersistServiceBuilder {
@Override
- public MetaDataManagerPersistService
buildMetaDataManagerPersistService(final ContextManager contextManager) {
- return new StandaloneMetaDataManagerPersistService(contextManager);
+ public MetaDataManagerPersistService
buildMetaDataManagerPersistService(final PersistRepository repository, final
MetaDataContextManager metaDataContextManager) {
+ return new StandaloneMetaDataManagerPersistService(repository,
metaDataContextManager);
}
@Override