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 911d72cad7947..027c9729c399a 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 @@ -56,6 +56,8 @@ public class MetaDataContextManager { private final ComputeNodeInstanceContext computeNodeInstanceContext; + private final MetaDataPersistService metaDataPersistService; + private final ShardingSphereDatabaseDataManager databaseManager; private final SchemaMetaDataManager schemaMetaDataManager; @@ -64,8 +66,6 @@ public class MetaDataContextManager { private final ResourceSwitchManager resourceSwitchManager; - private final MetaDataPersistService metaDataPersistService; - private final StorageUnitManager storageUnitManager; private final DatabaseRuleConfigurationManager databaseRuleConfigurationManager; @@ -75,14 +75,14 @@ public class MetaDataContextManager { public MetaDataContextManager(final MetaDataContexts metaDataContexts, final ComputeNodeInstanceContext computeNodeInstanceContext, final PersistRepository repository) { this.metaDataContexts = metaDataContexts; this.computeNodeInstanceContext = computeNodeInstanceContext; + metaDataPersistService = new MetaDataPersistService(repository); resourceSwitchManager = new ResourceSwitchManager(); databaseManager = new ShardingSphereDatabaseDataManager(metaDataContexts); - storageUnitManager = new StorageUnitManager(metaDataContexts, computeNodeInstanceContext, repository, resourceSwitchManager); - databaseRuleConfigurationManager = new DatabaseRuleConfigurationManager(metaDataContexts, computeNodeInstanceContext, repository); - schemaMetaDataManager = new SchemaMetaDataManager(metaDataContexts, repository); - ruleItemManager = new RuleItemManager(metaDataContexts, repository, databaseRuleConfigurationManager); - globalConfigurationManager = new GlobalConfigurationManager(metaDataContexts, repository); - metaDataPersistService = new MetaDataPersistService(repository); + storageUnitManager = new StorageUnitManager(metaDataContexts, computeNodeInstanceContext, resourceSwitchManager, metaDataPersistService); + databaseRuleConfigurationManager = new DatabaseRuleConfigurationManager(metaDataContexts, computeNodeInstanceContext, metaDataPersistService); + schemaMetaDataManager = new SchemaMetaDataManager(metaDataContexts, metaDataPersistService); + ruleItemManager = new RuleItemManager(metaDataContexts, databaseRuleConfigurationManager, metaDataPersistService); + globalConfigurationManager = new GlobalConfigurationManager(metaDataContexts, metaDataPersistService); } /** diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/DatabaseRuleConfigurationManager.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/DatabaseRuleConfigurationManager.java index 530a92899c67c..68f3566674a99 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/DatabaseRuleConfigurationManager.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/DatabaseRuleConfigurationManager.java @@ -17,6 +17,7 @@ package org.apache.shardingsphere.mode.metadata.manager; +import lombok.RequiredArgsConstructor; import org.apache.shardingsphere.infra.config.rule.RuleConfiguration; import org.apache.shardingsphere.infra.config.rule.scope.DatabaseRuleConfiguration; import org.apache.shardingsphere.infra.config.rule.scope.DatabaseRuleConfigurationEmptyChecker; @@ -29,7 +30,6 @@ import org.apache.shardingsphere.mode.metadata.MetaDataContexts; import org.apache.shardingsphere.mode.metadata.factory.MetaDataContextsFactory; import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService; -import org.apache.shardingsphere.mode.spi.repository.PersistRepository; import java.sql.SQLException; import java.util.Collection; @@ -40,6 +40,7 @@ /** * Database rule configuration manager. */ +@RequiredArgsConstructor public final class DatabaseRuleConfigurationManager { private final MetaDataContexts metaDataContexts; @@ -48,13 +49,6 @@ public final class DatabaseRuleConfigurationManager { private final MetaDataPersistService metaDataPersistService; - public DatabaseRuleConfigurationManager(final MetaDataContexts metaDataContexts, final ComputeNodeInstanceContext computeNodeInstanceContext, - final PersistRepository repository) { - this.metaDataContexts = metaDataContexts; - this.computeNodeInstanceContext = computeNodeInstanceContext; - metaDataPersistService = new MetaDataPersistService(repository); - } - /** * Alter rule configuration. * 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 7cc69a5c10b7e..3e3fc3c7f006f 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 @@ -17,6 +17,7 @@ package org.apache.shardingsphere.mode.metadata.manager; +import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.shardingsphere.infra.config.props.ConfigurationProperties; @@ -29,7 +30,6 @@ import org.apache.shardingsphere.mode.metadata.MetaDataContexts; import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService; import org.apache.shardingsphere.mode.node.tuple.annotation.RepositoryTupleEntity; -import org.apache.shardingsphere.mode.spi.repository.PersistRepository; import org.apache.shardingsphere.transaction.rule.TransactionRule; import java.util.Collection; @@ -40,6 +40,7 @@ /** * Global configuration manager. */ +@RequiredArgsConstructor @Slf4j public final class GlobalConfigurationManager { @@ -47,11 +48,6 @@ public final class GlobalConfigurationManager { private final MetaDataPersistService metaDataPersistService; - public GlobalConfigurationManager(final MetaDataContexts metaDataContexts, final PersistRepository repository) { - this.metaDataContexts = metaDataContexts; - metaDataPersistService = new MetaDataPersistService(repository); - } - /** * Alter global rule configuration. * 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 7c6a5ec3d16f3..7814babbaeb65 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 @@ -18,11 +18,11 @@ package org.apache.shardingsphere.mode.metadata.manager; import com.google.common.base.Preconditions; +import lombok.RequiredArgsConstructor; import org.apache.shardingsphere.infra.config.rule.RuleConfiguration; import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader; import org.apache.shardingsphere.mode.metadata.MetaDataContexts; import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService; -import org.apache.shardingsphere.mode.spi.repository.PersistRepository; import org.apache.shardingsphere.mode.spi.rule.RuleItemConfigurationChangedProcessor; import org.apache.shardingsphere.mode.spi.rule.item.alter.AlterRuleItem; import org.apache.shardingsphere.mode.spi.rule.item.drop.DropRuleItem; @@ -32,6 +32,7 @@ /** * Rule item manager. */ +@RequiredArgsConstructor public class RuleItemManager { private final MetaDataContexts metaDataContexts; @@ -40,12 +41,6 @@ public class RuleItemManager { private final MetaDataPersistService metaDataPersistService; - public RuleItemManager(final MetaDataContexts metaDataContexts, final PersistRepository repository, final DatabaseRuleConfigurationManager ruleConfigManager) { - this.metaDataContexts = metaDataContexts; - this.ruleConfigManager = ruleConfigManager; - metaDataPersistService = new MetaDataPersistService(repository); - } - /** * Alter with rule item. * diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/SchemaMetaDataManager.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/SchemaMetaDataManager.java index 59d384f6f559e..50237dd386c99 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/SchemaMetaDataManager.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/SchemaMetaDataManager.java @@ -18,6 +18,7 @@ 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; @@ -31,7 +32,6 @@ import org.apache.shardingsphere.mode.metadata.MetaDataContexts; import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService; import org.apache.shardingsphere.mode.metadata.refresher.util.TableRefreshUtils; -import org.apache.shardingsphere.mode.spi.repository.PersistRepository; import java.util.Collections; import java.util.Optional; @@ -39,17 +39,13 @@ /** * Resource meta data manager. */ +@RequiredArgsConstructor public final class SchemaMetaDataManager { private final MetaDataContexts metaDataContexts; private final MetaDataPersistService metaDataPersistService; - public SchemaMetaDataManager(final MetaDataContexts metaDataContexts, final PersistRepository repository) { - this.metaDataContexts = metaDataContexts; - metaDataPersistService = new MetaDataPersistService(repository); - } - /** * Add database. * diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/StorageUnitManager.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/StorageUnitManager.java index 4f7ef1d2467bb..a7e86c5687d8e 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/StorageUnitManager.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/StorageUnitManager.java @@ -17,6 +17,7 @@ package org.apache.shardingsphere.mode.metadata.manager; +import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties; @@ -27,7 +28,6 @@ import org.apache.shardingsphere.mode.metadata.MetaDataContexts; import org.apache.shardingsphere.mode.metadata.factory.MetaDataContextsFactory; import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService; -import org.apache.shardingsphere.mode.spi.repository.PersistRepository; import java.sql.SQLException; import java.util.Collection; @@ -38,6 +38,7 @@ /** * Storage unit manager. */ +@RequiredArgsConstructor @Slf4j public final class StorageUnitManager { @@ -49,14 +50,6 @@ public final class StorageUnitManager { private final MetaDataPersistService metaDataPersistService; - public StorageUnitManager(final 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. * diff --git a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/manager/SchemaMetaDataManagerTest.java b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/manager/SchemaMetaDataManagerTest.java index b5b1e318b8288..5041dbb506f1c 100644 --- a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/manager/SchemaMetaDataManagerTest.java +++ b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/manager/SchemaMetaDataManagerTest.java @@ -26,7 +26,7 @@ import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereView; import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader; import org.apache.shardingsphere.mode.metadata.MetaDataContexts; -import org.apache.shardingsphere.mode.spi.repository.PersistRepository; +import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -67,7 +67,7 @@ void setUp() { when(metaDataContexts.getMetaData().containsDatabase("foo_db")).thenReturn(true); when(metaDataContexts.getMetaData().getDatabase("foo_db")).thenReturn(database); when(metaDataContexts.getMetaData().getAllDatabases()).thenReturn(Collections.singleton(database)); - schemaMetaDataManager = new SchemaMetaDataManager(metaDataContexts, mock(PersistRepository.class)); + schemaMetaDataManager = new SchemaMetaDataManager(metaDataContexts, mock(MetaDataPersistService.class)); } private ShardingSphereDatabase mockDatabase() { diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java index 99025d945c3de..50dcedea8f057 100644 --- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java +++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java @@ -64,7 +64,7 @@ public final class ClusterMetaDataManagerPersistService implements MetaDataManag private final MetaDataContextManager metaDataContextManager; public ClusterMetaDataManagerPersistService(final PersistRepository repository, final MetaDataContextManager metaDataContextManager) { - metaDataPersistService = new MetaDataPersistService(repository); + metaDataPersistService = metaDataContextManager.getMetaDataPersistService(); listenerAssistedPersistService = new ListenerAssistedPersistService(repository); this.metaDataContextManager = metaDataContextManager; } diff --git a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/builder/StandalonePersistServiceBuilder.java b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/builder/StandalonePersistServiceBuilder.java index 9c75745b2cfce..577637992fbfb 100644 --- a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/builder/StandalonePersistServiceBuilder.java +++ b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/builder/StandalonePersistServiceBuilder.java @@ -32,7 +32,7 @@ public final class StandalonePersistServiceBuilder implements PersistServiceBuil @Override public MetaDataManagerPersistService buildMetaDataManagerPersistService(final PersistRepository repository, final MetaDataContextManager metaDataContextManager) { - return new StandaloneMetaDataManagerPersistService(repository, metaDataContextManager); + return new StandaloneMetaDataManagerPersistService(metaDataContextManager); } @Override diff --git a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java index dffa6d67eb36c..263266ccfa0bc 100644 --- a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java +++ b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java @@ -32,20 +32,19 @@ 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.mode.metadata.persist.MetaDataPersistService; -import org.apache.shardingsphere.mode.metadata.persist.service.config.database.DataSourceUnitPersistService; import org.apache.shardingsphere.mode.event.DataChangedEvent.Type; import org.apache.shardingsphere.mode.metadata.MetaDataContextManager; import org.apache.shardingsphere.mode.metadata.MetaDataContexts; import org.apache.shardingsphere.mode.metadata.factory.MetaDataContextsFactory; import org.apache.shardingsphere.mode.metadata.manager.RuleItemChangedBuilder; import org.apache.shardingsphere.mode.metadata.manager.SwitchingResource; +import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService; +import org.apache.shardingsphere.mode.metadata.persist.service.config.database.DataSourceUnitPersistService; import org.apache.shardingsphere.mode.metadata.refresher.util.TableRefreshUtils; import org.apache.shardingsphere.mode.persist.service.divided.MetaDataManagerPersistService; +import org.apache.shardingsphere.mode.spi.rule.item.RuleChangedItem; import org.apache.shardingsphere.mode.spi.rule.item.alter.AlterRuleItem; import org.apache.shardingsphere.mode.spi.rule.item.drop.DropRuleItem; -import org.apache.shardingsphere.mode.spi.repository.PersistRepository; -import org.apache.shardingsphere.mode.spi.rule.item.RuleChangedItem; import org.apache.shardingsphere.single.config.SingleRuleConfiguration; import java.sql.SQLException; @@ -69,9 +68,9 @@ public final class StandaloneMetaDataManagerPersistService implements MetaDataMa private final RuleItemChangedBuilder ruleItemChangedBuilder; - public StandaloneMetaDataManagerPersistService(final PersistRepository repository, final MetaDataContextManager metaDataContextManager) { - metaDataPersistService = new MetaDataPersistService(repository); + public StandaloneMetaDataManagerPersistService(final MetaDataContextManager metaDataContextManager) { this.metaDataContextManager = metaDataContextManager; + metaDataPersistService = metaDataContextManager.getMetaDataPersistService(); ruleItemChangedBuilder = new RuleItemChangedBuilder(); } diff --git a/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistServiceTest.java b/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistServiceTest.java index 37b4ae703c3ff..ef108ce22a355 100644 --- a/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistServiceTest.java +++ b/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistServiceTest.java @@ -28,11 +28,10 @@ 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.mode.metadata.persist.MetaDataPersistService; -import org.apache.shardingsphere.mode.metadata.persist.service.metadata.DatabaseMetaDataPersistFacade; import org.apache.shardingsphere.mode.metadata.MetaDataContextManager; import org.apache.shardingsphere.mode.metadata.manager.RuleItemChangedBuilder; -import org.apache.shardingsphere.mode.spi.repository.PersistRepository; +import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService; +import org.apache.shardingsphere.mode.metadata.persist.service.metadata.DatabaseMetaDataPersistFacade; import org.apache.shardingsphere.mode.spi.rule.item.alter.AlterRuleItem; import org.apache.shardingsphere.mode.spi.rule.item.drop.DropRuleItem; import org.apache.shardingsphere.single.config.SingleRuleConfiguration; @@ -75,7 +74,7 @@ class StandaloneMetaDataManagerPersistServiceTest { @BeforeEach @SneakyThrows(ReflectiveOperationException.class) void setUp() { - metaDataManagerPersistService = new StandaloneMetaDataManagerPersistService(mock(PersistRepository.class), metaDataContextManager); + metaDataManagerPersistService = new StandaloneMetaDataManagerPersistService(metaDataContextManager); Plugins.getMemberAccessor().set(StandaloneMetaDataManagerPersistService.class.getDeclaredField("metaDataPersistService"), metaDataManagerPersistService, metaDataPersistService); }