Skip to content

Commit e78d0bd

Browse files
authored
Remove useless RuleConfigurationPersistDecorator (#34322)
* Simplify MetaDataContextsFactory * Remove useless RuleConfigurationPersistDecorator
1 parent 0f36656 commit e78d0bd

File tree

8 files changed

+14
-287
lines changed

8 files changed

+14
-287
lines changed

mode/api/src/main/java/org/apache/shardingsphere/mode/spi/RuleConfigurationPersistDecorator.java

-66
This file was deleted.

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java

+2-6
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
2929
import org.apache.shardingsphere.infra.metadata.database.schema.manager.GenericSchemaManager;
3030
import org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder;
31-
import org.apache.shardingsphere.mode.metadata.decorator.RuleConfigurationPersistDecorateEngine;
3231
import org.apache.shardingsphere.mode.metadata.manager.DatabaseRuleConfigurationManager;
3332
import org.apache.shardingsphere.mode.metadata.manager.GlobalConfigurationManager;
3433
import org.apache.shardingsphere.mode.metadata.manager.ResourceSwitchManager;
@@ -72,8 +71,6 @@ public class MetaDataContextManager {
7271

7372
private final GlobalConfigurationManager globalConfigurationManager;
7473

75-
private final RuleConfigurationPersistDecorateEngine ruleConfigPersistDecorateEngine;
76-
7774
public MetaDataContextManager(final AtomicReference<MetaDataContexts> metaDataContexts, final ComputeNodeInstanceContext computeNodeInstanceContext, final PersistRepository repository) {
7875
this.metaDataContexts = metaDataContexts;
7976
this.computeNodeInstanceContext = computeNodeInstanceContext;
@@ -85,7 +82,6 @@ public MetaDataContextManager(final AtomicReference<MetaDataContexts> metaDataCo
8582
ruleItemManager = new RuleItemManager(metaDataContexts, repository, databaseRuleConfigurationManager);
8683
globalConfigurationManager = new GlobalConfigurationManager(metaDataContexts, repository);
8784
metaDataPersistService = new MetaDataPersistService(repository);
88-
ruleConfigPersistDecorateEngine = new RuleConfigurationPersistDecorateEngine(computeNodeInstanceContext);
8985
}
9086

9187
/**
@@ -154,8 +150,8 @@ private MetaDataContexts createMetaDataContexts(final ShardingSphereDatabase dat
154150
.createChangedDatabase(database.getName(), false, switchingResource, ruleConfigs, metaDataContexts.get(), metaDataPersistService, computeNodeInstanceContext);
155151
metaDataContexts.get().getMetaData().putDatabase(changedDatabase);
156152
ConfigurationProperties props = new ConfigurationProperties(metaDataPersistService.getPropsService().load());
157-
RuleMetaData changedGlobalMetaData = new RuleMetaData(GlobalRulesBuilder.buildRules(
158-
ruleConfigPersistDecorateEngine.restore(metaDataPersistService.getGlobalRuleService().load()), metaDataContexts.get().getMetaData().getAllDatabases(), props));
153+
Collection<RuleConfiguration> globalRuleConfigs = metaDataPersistService.getGlobalRuleService().load();
154+
RuleMetaData changedGlobalMetaData = new RuleMetaData(GlobalRulesBuilder.buildRules(globalRuleConfigs, metaDataContexts.get().getMetaData().getAllDatabases(), props));
159155
ShardingSphereMetaData metaData = new ShardingSphereMetaData(
160156
metaDataContexts.get().getMetaData().getAllDatabases(), metaDataContexts.get().getMetaData().getGlobalResourceMetaData(), changedGlobalMetaData, props);
161157
MetaDataContexts result = new MetaDataContexts(metaData, ShardingSphereStatisticsFactory.create(metaDataPersistService, metaData));

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java

+5-27
Original file line numberDiff line numberDiff line change
@@ -37,21 +37,16 @@
3737
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
3838
import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabaseData;
3939
import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereSchemaData;
40-
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
4140
import org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder;
42-
import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
4341
import org.apache.shardingsphere.mode.manager.ContextManagerBuilderParameter;
44-
import org.apache.shardingsphere.mode.metadata.decorator.RuleConfigurationPersistDecorateEngine;
4542
import org.apache.shardingsphere.mode.metadata.factory.ExternalMetaDataFactory;
4643
import org.apache.shardingsphere.mode.metadata.factory.InternalMetaDataFactory;
4744
import org.apache.shardingsphere.mode.metadata.manager.SwitchingResource;
4845
import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
49-
import org.apache.shardingsphere.mode.spi.RuleConfigurationPersistDecorator;
5046

5147
import javax.sql.DataSource;
5248
import java.sql.SQLException;
5349
import java.util.Collection;
54-
import java.util.Collections;
5550
import java.util.LinkedHashMap;
5651
import java.util.Map;
5752
import java.util.Map.Entry;
@@ -98,9 +93,7 @@ private static MetaDataContexts createByRepository(final MetaDataPersistService
9893
Collection<RuleConfiguration> globalRuleConfigs = persistService.getGlobalRuleService().load();
9994
ConfigurationProperties props = new ConfigurationProperties(persistService.getPropsService().load());
10095
Map<String, ShardingSphereDatabase> databases = InternalMetaDataFactory.create(persistService, effectiveDatabaseConfigs, props, instanceContext);
101-
MetaDataContexts result = newMetaDataContexts(persistService, param, globalRuleConfigs, databases, props);
102-
restoreRules(result, instanceContext);
103-
return result;
96+
return newMetaDataContexts(persistService, param, globalRuleConfigs, databases, props);
10497
}
10598

10699
private static MetaDataContexts newMetaDataContexts(final MetaDataPersistService persistService, final ContextManagerBuilderParameter param,
@@ -139,25 +132,10 @@ private static void closeGeneratedDataSources(final String databaseName, final M
139132
}
140133
}
141134

142-
@SuppressWarnings({"unchecked", "rawtypes"})
143-
private static void restoreRules(final MetaDataContexts metaDataContexts, final ComputeNodeInstanceContext instanceContext) {
144-
if (!instanceContext.getModeConfiguration().isCluster()) {
145-
return;
146-
}
147-
for (RuleConfigurationPersistDecorator each : ShardingSphereServiceLoader.getServiceInstances(RuleConfigurationPersistDecorator.class)) {
148-
ShardingSphereRule rule = metaDataContexts.getMetaData().getGlobalRuleMetaData().getSingleRule(each.getRuleType());
149-
metaDataContexts.getMetaData().getGlobalRuleMetaData().getRules().removeIf(eachRule -> each.getRuleType() == eachRule.getClass());
150-
RuleConfiguration restoredRuleConfig = each.restore(rule.getConfiguration());
151-
ShardingSphereRule rebuiltRule = GlobalRulesBuilder.buildRules(
152-
Collections.singleton(restoredRuleConfig), metaDataContexts.getMetaData().getAllDatabases(), metaDataContexts.getMetaData().getProps()).iterator().next();
153-
metaDataContexts.getMetaData().getGlobalRuleMetaData().getRules().add(rebuiltRule);
154-
}
155-
}
156-
157-
private static void persistDatabaseConfigurations(final MetaDataContexts metadataContexts, final ContextManagerBuilderParameter param, final MetaDataPersistService persistService,
158-
final ComputeNodeInstanceContext instanceContext) {
159-
RuleConfigurationPersistDecorateEngine ruleConfigPersistDecorateEngine = new RuleConfigurationPersistDecorateEngine(instanceContext);
160-
persistService.persistGlobalRuleConfiguration(ruleConfigPersistDecorateEngine.decorate(metadataContexts.getMetaData().getGlobalRuleMetaData().getConfigurations()), param.getProps());
135+
private static void persistDatabaseConfigurations(final MetaDataContexts metadataContexts,
136+
final ContextManagerBuilderParameter param, final MetaDataPersistService persistService, final ComputeNodeInstanceContext instanceContext) {
137+
Collection<RuleConfiguration> globalRuleConfigs = metadataContexts.getMetaData().getGlobalRuleMetaData().getConfigurations();
138+
persistService.persistGlobalRuleConfiguration(globalRuleConfigs, param.getProps());
161139
for (Entry<String, ? extends DatabaseConfiguration> entry : param.getDatabaseConfigs().entrySet()) {
162140
String databaseName = entry.getKey();
163141
persistService.persistConfigurations(entry.getKey(), entry.getValue(),

mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/decorator/RuleConfigurationPersistDecorateEngine.java

-78
This file was deleted.

mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/decorator/RuleConfigurationPersistDecorateEngineTest.java

-91
This file was deleted.

mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/GlobalRuleChangedHandler.java

+2-6
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,12 @@
1919

2020
import com.google.common.base.Preconditions;
2121
import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
22-
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
23-
import org.apache.shardingsphere.mode.metadata.persist.node.GlobalNodePath;
2422
import org.apache.shardingsphere.mode.event.DataChangedEvent;
2523
import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
2624
import org.apache.shardingsphere.mode.manager.ContextManager;
2725
import org.apache.shardingsphere.mode.manager.cluster.dispatch.checker.ActiveVersionChecker;
2826
import org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.DataChangedEventHandler;
29-
import org.apache.shardingsphere.mode.spi.RuleConfigurationPersistDecorator;
27+
import org.apache.shardingsphere.mode.metadata.persist.node.GlobalNodePath;
3028

3129
import java.util.Arrays;
3230
import java.util.Collection;
@@ -47,7 +45,6 @@ public Collection<Type> getSubscribedTypes() {
4745
return Arrays.asList(Type.ADDED, Type.UPDATED);
4846
}
4947

50-
@SuppressWarnings("unchecked")
5148
@Override
5249
public void handle(final ContextManager contextManager, final DataChangedEvent event) {
5350
if (!org.apache.shardingsphere.mode.path.GlobalNodePath.isRuleActiveVersionPath(event.getKey())) {
@@ -60,7 +57,6 @@ public void handle(final ContextManager contextManager, final DataChangedEvent e
6057
ActiveVersionChecker.checkActiveVersion(contextManager, event);
6158
Optional<RuleConfiguration> ruleConfig = contextManager.getPersistServiceFacade().getMetaDataPersistService().getGlobalRuleService().load(ruleName.get());
6259
Preconditions.checkArgument(ruleConfig.isPresent(), "Can not find rule configuration with name: %s", ruleName.get());
63-
contextManager.getMetaDataContextManager().getGlobalConfigurationManager().alterGlobalRuleConfiguration(
64-
TypedSPILoader.findService(RuleConfigurationPersistDecorator.class, ruleConfig.get().getClass()).map(optional -> optional.restore(ruleConfig.get())).orElse(ruleConfig.get()));
60+
contextManager.getMetaDataContextManager().getGlobalConfigurationManager().alterGlobalRuleConfiguration(ruleConfig.get());
6561
}
6662
}

0 commit comments

Comments
 (0)