Skip to content

Commit

Permalink
Refactor MetaDataContextManager (#34403)
Browse files Browse the repository at this point in the history
* Refactor MetaDataContextManager

* Refactor MetaDataContextManager
  • Loading branch information
terrymanu authored Jan 19, 2025
1 parent 759076c commit 0513be7
Show file tree
Hide file tree
Showing 11 changed files with 30 additions and 58 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ public class MetaDataContextManager {

private final ComputeNodeInstanceContext computeNodeInstanceContext;

private final MetaDataPersistService metaDataPersistService;

private final ShardingSphereDatabaseDataManager databaseManager;

private final SchemaMetaDataManager schemaMetaDataManager;
Expand All @@ -64,8 +66,6 @@ public class MetaDataContextManager {

private final ResourceSwitchManager resourceSwitchManager;

private final MetaDataPersistService metaDataPersistService;

private final StorageUnitManager storageUnitManager;

private final DatabaseRuleConfigurationManager databaseRuleConfigurationManager;
Expand All @@ -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);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -40,6 +40,7 @@
/**
* Database rule configuration manager.
*/
@RequiredArgsConstructor
public final class DatabaseRuleConfigurationManager {

private final MetaDataContexts metaDataContexts;
Expand All @@ -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.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -40,18 +40,14 @@
/**
* Global configuration manager.
*/
@RequiredArgsConstructor
@Slf4j
public final class GlobalConfigurationManager {

private final MetaDataContexts metaDataContexts;

private final MetaDataPersistService metaDataPersistService;

public GlobalConfigurationManager(final MetaDataContexts metaDataContexts, final PersistRepository repository) {
this.metaDataContexts = metaDataContexts;
metaDataPersistService = new MetaDataPersistService(repository);
}

/**
* Alter global rule configuration.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -32,6 +32,7 @@
/**
* Rule item manager.
*/
@RequiredArgsConstructor
public class RuleItemManager {

private final MetaDataContexts metaDataContexts;
Expand All @@ -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.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -31,25 +32,20 @@
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;

/**
* 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.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -38,6 +38,7 @@
/**
* Storage unit manager.
*/
@RequiredArgsConstructor
@Slf4j
public final class StorageUnitManager {

Expand All @@ -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.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
}

Expand Down

0 comments on commit 0513be7

Please sign in to comment.