Skip to content

Commit

Permalink
Refactor ClusterMetaDataManagerPersistService (#34363)
Browse files Browse the repository at this point in the history
  • Loading branch information
menghaoranss authored Jan 15, 2025
1 parent e8a74d3 commit 0703e4c
Showing 1 changed file with 15 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,13 @@
import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
import org.apache.shardingsphere.infra.datasource.pool.destroyer.DataSourcePoolDestroyer;
import org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNode;
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
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.statistics.ShardingSphereStatistics;
import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
import org.apache.shardingsphere.mode.metadata.persist.service.config.database.DataSourceUnitPersistService;
Expand Down Expand Up @@ -114,9 +116,10 @@ public void alterSchemaMetaData(final AlterSchemaMetaDataPOJO alterSchemaMetaDat
alterSchemaMetaDataPOJO.getDroppedViews().forEach(each -> databaseMetaDataFacade.getView().delete(databaseName, schemaName, each));
}

@SneakyThrows
@Override
public void registerStorageUnits(final String databaseName, final Map<String, DataSourcePoolProperties> toBeRegisteredProps) throws SQLException {
MetaDataContexts originalMetaDataContexts = metaDataContextManager.getMetaDataContexts();
public void registerStorageUnits(final String databaseName, final Map<String, DataSourcePoolProperties> toBeRegisteredProps) {
MetaDataContexts originalMetaDataContexts = buildOriginalMetaDataContexts();
Map<StorageNode, DataSource> newDataSources = new HashMap<>(toBeRegisteredProps.size());
try {
SwitchingResource switchingResource = metaDataContextManager.getResourceSwitchManager()
Expand All @@ -134,7 +137,7 @@ public void registerStorageUnits(final String databaseName, final Map<String, Da

@Override
public void alterStorageUnits(final String databaseName, final Map<String, DataSourcePoolProperties> toBeUpdatedProps) throws SQLException {
MetaDataContexts originalMetaDataContexts = metaDataContextManager.getMetaDataContexts();
MetaDataContexts originalMetaDataContexts = buildOriginalMetaDataContexts();
Map<StorageNode, DataSource> newDataSources = new HashMap<>(toBeUpdatedProps.size());
try {
SwitchingResource switchingResource = metaDataContextManager.getResourceSwitchManager()
Expand All @@ -155,7 +158,7 @@ public void alterStorageUnits(final String databaseName, final Map<String, DataS
@Override
public void unregisterStorageUnits(final String databaseName, final Collection<String> toBeDroppedStorageUnitNames) throws SQLException {
for (String each : getToBeDroppedResourceNames(databaseName, toBeDroppedStorageUnitNames)) {
MetaDataContexts originalMetaDataContexts = metaDataContextManager.getMetaDataContexts();
MetaDataContexts originalMetaDataContexts = buildOriginalMetaDataContexts();
SwitchingResource switchingResource = metaDataContextManager.getResourceSwitchManager()
.createByUnregisterStorageUnit(originalMetaDataContexts.getMetaData().getDatabase(databaseName).getResourceMetaData(), Collections.singletonList(each));
MetaDataContexts reloadMetaDataContexts = MetaDataContextsFactory.createBySwitchResource(databaseName, false,
Expand Down Expand Up @@ -209,7 +212,7 @@ public void alterRuleConfiguration(final String databaseName, final RuleConfigur
if (null == toBeAlteredRuleConfig) {
return;
}
MetaDataContexts originalMetaDataContexts = metaDataContextManager.getMetaDataContexts();
MetaDataContexts originalMetaDataContexts = buildOriginalMetaDataContexts();
Collection<MetaDataVersion> metaDataVersions = metaDataPersistService.getDatabaseRulePersistService().persist(databaseName, Collections.singleton(toBeAlteredRuleConfig));
metaDataPersistService.getMetaDataVersionPersistService().switchActiveVersion(metaDataVersions);
afterRuleConfigurationAltered(databaseName, originalMetaDataContexts);
Expand All @@ -232,7 +235,7 @@ public void removeRuleConfigurationItem(final String databaseName, final RuleCon

@Override
public void removeRuleConfiguration(final String databaseName, final String ruleName) {
MetaDataContexts originalMetaDataContexts = metaDataContextManager.getMetaDataContexts();
MetaDataContexts originalMetaDataContexts = buildOriginalMetaDataContexts();
metaDataPersistService.getDatabaseRulePersistService().delete(databaseName, ruleName);
afterRuleConfigurationDropped(databaseName, originalMetaDataContexts);
}
Expand Down Expand Up @@ -264,4 +267,10 @@ public void createTable(final String databaseName, final String schemaName, fina
public void dropTables(final String databaseName, final String schemaName, final Collection<String> tableNames) {
tableNames.forEach(each -> metaDataPersistService.getDatabaseMetaDataFacade().getTable().drop(databaseName, schemaName, each));
}

private MetaDataContexts buildOriginalMetaDataContexts() {
ShardingSphereMetaData originalMetaData = metaDataContextManager.getMetaDataContexts().getMetaData();
ShardingSphereStatistics originalStatistics = metaDataContextManager.getMetaDataContexts().getStatistics();
return new MetaDataContexts(originalMetaData, originalStatistics);
}
}

0 comments on commit 0703e4c

Please sign in to comment.