This is an automated email from the ASF dual-hosted git repository.
chengzhang 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 8f9516f6bbd Refactor close resource when alter transaction rule
(#30872)
8f9516f6bbd is described below
commit 8f9516f6bbd14dd217cc94401a3d2495638bf69d
Author: zhaojinchao <[email protected]>
AuthorDate: Sat Apr 13 11:06:11 2024 +0800
Refactor close resource when alter transaction rule (#30872)
* Refactor close resource when alter transaction rule
* Fix close state
* Fix checkstyle
---
.../database/DatabaseMetaDataPersistService.java | 11 ++-
.../schema/SchemaMetaDataPersistService.java | 14 ----
.../schema/TableMetaDataPersistService.java | 23 ++-----
.../service/schema/ViewMetaDataPersistService.java | 23 ++-----
.../context/ConfigurationContextManager.java | 79 +++++++---------------
.../mode/manager/ContextManagerTest.java | 9 ---
.../manager/cluster/ClusterModeContextManager.java | 6 +-
.../subscriber/ConfigurationChangedSubscriber.java | 3 +-
8 files changed, 45 insertions(+), 123 deletions(-)
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/database/DatabaseMetaDataPersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/database/DatabaseMetaDataPersistService.java
index 1115177ad4b..351629379eb 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/database/DatabaseMetaDataPersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/database/DatabaseMetaDataPersistService.java
@@ -47,9 +47,9 @@ public final class DatabaseMetaDataPersistService implements
DatabaseMetaDataBas
public DatabaseMetaDataPersistService(final PersistRepository repository,
final MetaDataVersionPersistService metaDataVersionPersistService) {
this.repository = repository;
- this.tableMetaDataPersistService = new
TableMetaDataPersistService(repository);
- this.viewMetaDataPersistService = new
ViewMetaDataPersistService(repository);
this.metaDataVersionPersistService = metaDataVersionPersistService;
+ this.tableMetaDataPersistService = new
TableMetaDataPersistService(repository, metaDataVersionPersistService);
+ this.viewMetaDataPersistService = new
ViewMetaDataPersistService(repository, metaDataVersionPersistService);
}
@Override
@@ -83,8 +83,7 @@ public final class DatabaseMetaDataPersistService implements
DatabaseMetaDataBas
addSchema(databaseName, schemaName);
}
Map<String, ShardingSphereTable> currentTables =
tableMetaDataPersistService.load(databaseName, schemaName);
-
metaDataVersionPersistService.switchActiveVersion(tableMetaDataPersistService
- .persistSchemaMetaData(databaseName, schemaName,
GenericSchemaManager.getToBeAddedTables(schema.getTables(), currentTables)));
+ tableMetaDataPersistService.persist(databaseName, schemaName,
GenericSchemaManager.getToBeAddedTables(schema.getTables(), currentTables));
GenericSchemaManager.getToBeDeletedTables(schema.getTables(),
currentTables).forEach((key, value) ->
tableMetaDataPersistService.delete(databaseName, schemaName, key));
}
@@ -93,12 +92,12 @@ public final class DatabaseMetaDataPersistService
implements DatabaseMetaDataBas
if (schema.getTables().isEmpty() && schema.getViews().isEmpty()) {
addSchema(databaseName, schemaName);
}
-
metaDataVersionPersistService.switchActiveVersion(tableMetaDataPersistService.persistSchemaMetaData(databaseName,
schemaName, schema.getTables()));
+ tableMetaDataPersistService.persist(databaseName, schemaName,
schema.getTables());
}
@Override
public void persistByDropConfiguration(final String databaseName, final
String schemaName, final ShardingSphereSchema schema) {
-
metaDataVersionPersistService.switchActiveVersion(tableMetaDataPersistService.persistSchemaMetaData(databaseName,
schemaName, schema.getTables()));
+ tableMetaDataPersistService.persist(databaseName, schemaName,
schema.getTables());
}
@Override
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/SchemaMetaDataPersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/SchemaMetaDataPersistService.java
index 0b38b6114eb..f4730264307 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/SchemaMetaDataPersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/SchemaMetaDataPersistService.java
@@ -17,10 +17,6 @@
package org.apache.shardingsphere.metadata.persist.service.schema;
-import org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
-
-import java.util.Collection;
-
/**
* Schema meta data persist service.
*
@@ -37,16 +33,6 @@ public interface SchemaMetaDataPersistService<T> {
*/
void persist(String databaseName, String schemaName, T schema);
- /**
- * Persist schema meta data.
- *
- * @param databaseName database name
- * @param schemaName schema name
- * @param schema schema meta data
- * @return meta data versions
- */
- Collection<MetaDataVersion> persistSchemaMetaData(String databaseName,
String schemaName, T schema);
-
/**
* Load schema meta data.
*
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/TableMetaDataPersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/TableMetaDataPersistService.java
index caa12fd28a0..c3147767122 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/TableMetaDataPersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/TableMetaDataPersistService.java
@@ -25,6 +25,7 @@ import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import
org.apache.shardingsphere.infra.yaml.schema.pojo.YamlShardingSphereTable;
import org.apache.shardingsphere.infra.yaml.schema.swapper.YamlTableSwapper;
import
org.apache.shardingsphere.metadata.persist.node.metadata.TableMetaDataNode;
+import
org.apache.shardingsphere.metadata.persist.service.version.MetaDataVersionPersistService;
import org.apache.shardingsphere.mode.spi.PersistRepository;
import java.util.Collection;
@@ -45,23 +46,11 @@ public final class TableMetaDataPersistService implements
SchemaMetaDataPersistS
private final PersistRepository repository;
- @Override
- public void persist(final String databaseName, final String schemaName,
final Map<String, ShardingSphereTable> tables) {
- for (Entry<String, ShardingSphereTable> entry : tables.entrySet()) {
- String tableName = entry.getKey().toLowerCase();
- List<String> versions =
repository.getChildrenKeys(TableMetaDataNode.getTableVersionsNode(databaseName,
schemaName, tableName));
-
repository.persist(TableMetaDataNode.getTableVersionNode(databaseName,
schemaName, tableName, versions.isEmpty()
- ? DEFAULT_VERSION
- : String.valueOf(Integer.parseInt(versions.get(0)) + 1)),
YamlEngine.marshal(new
YamlTableSwapper().swapToYamlConfiguration(entry.getValue())));
- if
(Strings.isNullOrEmpty(repository.getDirectly(TableMetaDataNode.getTableActiveVersionNode(databaseName,
schemaName, tableName)))) {
-
repository.persist(TableMetaDataNode.getTableActiveVersionNode(databaseName,
schemaName, tableName), DEFAULT_VERSION);
- }
- }
- }
+ private final MetaDataVersionPersistService metaDataVersionPersistService;
@Override
- public Collection<MetaDataVersion> persistSchemaMetaData(final String
databaseName, final String schemaName, final Map<String, ShardingSphereTable>
tables) {
- Collection<MetaDataVersion> result = new LinkedList<>();
+ public void persist(final String databaseName, final String schemaName,
final Map<String, ShardingSphereTable> tables) {
+ Collection<MetaDataVersion> metaDataVersions = new LinkedList<>();
for (Entry<String, ShardingSphereTable> entry : tables.entrySet()) {
String tableName = entry.getKey().toLowerCase();
List<String> versions =
repository.getChildrenKeys(TableMetaDataNode.getTableVersionsNode(databaseName,
schemaName, tableName));
@@ -71,9 +60,9 @@ public final class TableMetaDataPersistService implements
SchemaMetaDataPersistS
if (Strings.isNullOrEmpty(getActiveVersion(databaseName,
schemaName, tableName))) {
repository.persist(TableMetaDataNode.getTableActiveVersionNode(databaseName,
schemaName, tableName), DEFAULT_VERSION);
}
- result.add(new
MetaDataVersion(TableMetaDataNode.getTableNode(databaseName, schemaName,
tableName), getActiveVersion(databaseName, schemaName, tableName),
nextActiveVersion));
+ metaDataVersions.add(new
MetaDataVersion(TableMetaDataNode.getTableNode(databaseName, schemaName,
tableName), getActiveVersion(databaseName, schemaName, tableName),
nextActiveVersion));
}
- return result;
+ metaDataVersionPersistService.switchActiveVersion(metaDataVersions);
}
private String getActiveVersion(final String databaseName, final String
schemaName, final String tableName) {
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/ViewMetaDataPersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/ViewMetaDataPersistService.java
index 65eb5fb9717..e97fbde82ea 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/ViewMetaDataPersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/ViewMetaDataPersistService.java
@@ -25,6 +25,7 @@ import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
import org.apache.shardingsphere.infra.yaml.schema.pojo.YamlShardingSphereView;
import org.apache.shardingsphere.infra.yaml.schema.swapper.YamlViewSwapper;
import
org.apache.shardingsphere.metadata.persist.node.metadata.ViewMetaDataNode;
+import
org.apache.shardingsphere.metadata.persist.service.version.MetaDataVersionPersistService;
import org.apache.shardingsphere.mode.spi.PersistRepository;
import java.util.Collection;
@@ -45,23 +46,11 @@ public final class ViewMetaDataPersistService implements
SchemaMetaDataPersistSe
private final PersistRepository repository;
- @Override
- public void persist(final String databaseName, final String schemaName,
final Map<String, ShardingSphereView> views) {
- for (Entry<String, ShardingSphereView> entry : views.entrySet()) {
- String viewName = entry.getKey().toLowerCase();
- List<String> versions =
repository.getChildrenKeys(ViewMetaDataNode.getViewVersionsNode(databaseName,
schemaName, viewName));
-
repository.persist(ViewMetaDataNode.getViewVersionNode(databaseName,
schemaName, viewName, versions.isEmpty()
- ? DEFAULT_VERSION
- : String.valueOf(Integer.parseInt(versions.get(0)) + 1)),
YamlEngine.marshal(new
YamlViewSwapper().swapToYamlConfiguration(entry.getValue())));
- if
(Strings.isNullOrEmpty(repository.getDirectly(ViewMetaDataNode.getViewActiveVersionNode(databaseName,
schemaName, viewName)))) {
-
repository.persist(ViewMetaDataNode.getViewActiveVersionNode(databaseName,
schemaName, viewName), DEFAULT_VERSION);
- }
- }
- }
+ private final MetaDataVersionPersistService metaDataVersionPersistService;
@Override
- public Collection<MetaDataVersion> persistSchemaMetaData(final String
databaseName, final String schemaName, final Map<String, ShardingSphereView>
views) {
- Collection<MetaDataVersion> result = new LinkedList<>();
+ public void persist(final String databaseName, final String schemaName,
final Map<String, ShardingSphereView> views) {
+ Collection<MetaDataVersion> metaDataVersions = new LinkedList<>();
for (Entry<String, ShardingSphereView> entry : views.entrySet()) {
String viewName = entry.getKey().toLowerCase();
List<String> versions =
repository.getChildrenKeys(ViewMetaDataNode.getViewVersionsNode(databaseName,
schemaName, viewName));
@@ -71,9 +60,9 @@ public final class ViewMetaDataPersistService implements
SchemaMetaDataPersistSe
if (Strings.isNullOrEmpty(getActiveVersion(databaseName,
schemaName, viewName))) {
repository.persist(ViewMetaDataNode.getViewActiveVersionNode(databaseName,
schemaName, viewName), DEFAULT_VERSION);
}
- result.add(new
MetaDataVersion(ViewMetaDataNode.getViewNode(databaseName, schemaName,
viewName), getActiveVersion(databaseName, schemaName, viewName),
nextActiveVersion));
+ metaDataVersions.add(new
MetaDataVersion(ViewMetaDataNode.getViewNode(databaseName, schemaName,
viewName), getActiveVersion(databaseName, schemaName, viewName),
nextActiveVersion));
}
- return result;
+ metaDataVersionPersistService.switchActiveVersion(metaDataVersions);
}
private String getActiveVersion(final String databaseName, final String
schemaName, final String viewName) {
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/context/ConfigurationContextManager.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/context/ConfigurationContextManager.java
index 55fdb0aede1..8f281988218 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/context/ConfigurationContextManager.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/context/ConfigurationContextManager.java
@@ -38,12 +38,15 @@ import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSp
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import
org.apache.shardingsphere.infra.rule.builder.database.DatabaseRulesBuilder;
import org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder;
+import
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlDataNodeGlobalRuleConfigurationSwapper;
+import
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlDataNodeGlobalRuleConfigurationSwapperEngine;
import org.apache.shardingsphere.metadata.factory.ExternalMetaDataFactory;
import org.apache.shardingsphere.metadata.factory.InternalMetaDataFactory;
import org.apache.shardingsphere.metadata.persist.MetaDataBasedPersistService;
import org.apache.shardingsphere.mode.manager.switcher.ResourceSwitchManager;
import org.apache.shardingsphere.mode.manager.switcher.SwitchingResource;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
+import org.apache.shardingsphere.transaction.rule.TransactionRule;
import javax.sql.DataSource;
import java.sql.SQLException;
@@ -175,7 +178,7 @@ public final class ConfigurationContextManager {
ShardingSphereDatabase database =
metaDataContexts.get().getMetaData().getDatabase(databaseName);
Collection<ShardingSphereRule> rules = new
LinkedList<>(database.getRuleMetaData().getRules());
rules.removeIf(each ->
each.getConfiguration().getClass().isAssignableFrom(ruleConfig.getClass()));
- if (isNotEmptyConfig(ruleConfig)) {
+ if (!((DatabaseRuleConfiguration) ruleConfig).isEmpty()) {
rules.addAll(DatabaseRulesBuilder.build(databaseName,
database.getProtocolType(),
database.getResourceMetaData().getStorageUnits().entrySet().stream()
.collect(Collectors.toMap(Entry::getKey, entry
-> entry.getValue().getDataSource(), (oldValue, currentValue) -> oldValue,
LinkedHashMap::new)),
@@ -187,10 +190,6 @@ public final class ConfigurationContextManager {
}
}
- private static boolean isNotEmptyConfig(final RuleConfiguration
ruleConfig) {
- return !((DatabaseRuleConfiguration) ruleConfig).isEmpty();
- }
-
private void refreshMetadata(final String databaseName, final
ShardingSphereDatabase database, final Collection<ShardingSphereRule> rules,
final boolean isDropConfig) throws SQLException {
database.getRuleMetaData().getRules().clear();
database.getRuleMetaData().getRules().addAll(rules);
@@ -233,13 +232,13 @@ public final class ConfigurationContextManager {
* @return ShardingSphere databases
*/
public Map<String, ShardingSphereDatabase> renewDatabase(final
ShardingSphereDatabase database, final SwitchingResource resource) {
- Map<StorageNode, DataSource> newStorageNodes =
getNewStorageNodes(database.getResourceMetaData().getDataSources(), resource);
- Map<String, StorageUnit> newStorageUnits =
getNewStorageUnits(database.getResourceMetaData().getStorageUnits(), resource);
+ Map<StorageNode, DataSource> storageNodes =
getStorageNodes(database.getResourceMetaData().getDataSources(), resource);
+ Map<String, StorageUnit> storageUnits =
getStorageUnits(database.getResourceMetaData().getStorageUnits(), resource);
return Collections.singletonMap(database.getName().toLowerCase(), new
ShardingSphereDatabase(database.getName(), database.getProtocolType(),
- new ResourceMetaData(newStorageNodes, newStorageUnits),
database.getRuleMetaData(), database.getSchemas()));
+ new ResourceMetaData(storageNodes, storageUnits),
database.getRuleMetaData(), database.getSchemas()));
}
- private Map<StorageNode, DataSource> getNewStorageNodes(final
Map<StorageNode, DataSource> currentStorageNodes, final SwitchingResource
resource) {
+ private Map<StorageNode, DataSource> getStorageNodes(final
Map<StorageNode, DataSource> currentStorageNodes, final SwitchingResource
resource) {
Map<StorageNode, DataSource> result = new
LinkedHashMap<>(currentStorageNodes.size(), 1F);
for (Entry<StorageNode, DataSource> entry :
currentStorageNodes.entrySet()) {
if (!resource.getStaleDataSources().containsKey(entry.getKey())) {
@@ -249,7 +248,7 @@ public final class ConfigurationContextManager {
return result;
}
- private Map<String, StorageUnit> getNewStorageUnits(final Map<String,
StorageUnit> currentStorageUnits, final SwitchingResource resource) {
+ private Map<String, StorageUnit> getStorageUnits(final Map<String,
StorageUnit> currentStorageUnits, final SwitchingResource resource) {
Map<String, StorageUnit> result = new
LinkedHashMap<>(currentStorageUnits.size(), 1F);
for (Entry<String, StorageUnit> entry :
currentStorageUnits.entrySet()) {
if (!resource.getStaleStorageUnitNames().contains(entry.getKey()))
{
@@ -268,23 +267,6 @@ public final class ConfigurationContextManager {
}
}
- /**
- * Create meta data contexts when rule configuration changed.
- *
- * @param databaseName database name
- * @param internalLoadMetaData internal load meta data
- * @param switchingResource switching resource
- * @param ruleConfigs rule configs
- * @return MetaDataContexts meta data contexts
- * @throws SQLException SQL exception
- */
- public MetaDataContexts createMetaDataContextsWhenRuleChanged(final String
databaseName, final boolean internalLoadMetaData, final SwitchingResource
switchingResource,
- final
Collection<RuleConfiguration> ruleConfigs) throws SQLException {
- return newMetaDataContexts(new
ShardingSphereMetaData(createChangedDatabases(databaseName,
internalLoadMetaData, switchingResource, ruleConfigs),
-
metaDataContexts.get().getMetaData().getGlobalResourceMetaData(),
metaDataContexts.get().getMetaData().getGlobalRuleMetaData(),
- metaDataContexts.get().getMetaData().getProps()));
- }
-
/**
* Create meta data contexts.
*
@@ -370,23 +352,6 @@ public final class ConfigurationContextManager {
metaDataContexts.get().getPersistService().getDatabaseMetaDataService().loadSchemas(originalDatabase.getName())));
}
- /**
- * Alter global rule configuration.
- *
- * @param ruleConfigs global rule configuration
- */
- public synchronized void alterGlobalRuleConfiguration(final
Collection<RuleConfiguration> ruleConfigs) {
- if (ruleConfigs.isEmpty()) {
- return;
- }
- closeStaleGlobalRules();
- RuleMetaData toBeChangedGlobalRuleMetaData = new RuleMetaData(
- GlobalRulesBuilder.buildRules(ruleConfigs,
metaDataContexts.get().getMetaData().getDatabases(),
metaDataContexts.get().getMetaData().getProps()));
- ShardingSphereMetaData toBeChangedMetaData = new
ShardingSphereMetaData(metaDataContexts.get().getMetaData().getDatabases(),
metaDataContexts.get().getMetaData().getGlobalResourceMetaData(),
- toBeChangedGlobalRuleMetaData,
metaDataContexts.get().getMetaData().getProps());
- metaDataContexts.set(newMetaDataContexts(toBeChangedMetaData));
- }
-
/**
* Alter global rule configuration.
*
@@ -396,7 +361,9 @@ public final class ConfigurationContextManager {
if (null == ruleConfig) {
return;
}
- Collection<ShardingSphereRule> rules =
removeSingleGlobalRule(ruleConfig);
+ closeStaleTransactionRule(ruleConfig);
+ Collection<ShardingSphereRule> rules = new
LinkedList<>(metaDataContexts.get().getMetaData().getGlobalRuleMetaData().getRules());
+ rules.removeIf(each ->
each.getConfiguration().getClass().isAssignableFrom(ruleConfig.getClass()));
rules.addAll(GlobalRulesBuilder.buildSingleRules(ruleConfig,
metaDataContexts.get().getMetaData().getDatabases(),
metaDataContexts.get().getMetaData().getProps()));
metaDataContexts.get().getMetaData().getGlobalRuleMetaData().getRules().clear();
metaDataContexts.get().getMetaData().getGlobalRuleMetaData().getRules().addAll(rules);
@@ -405,17 +372,19 @@ public final class ConfigurationContextManager {
metaDataContexts.set(newMetaDataContexts(toBeChangedMetaData));
}
- private Collection<ShardingSphereRule> removeSingleGlobalRule(final
RuleConfiguration ruleConfig) {
- Collection<ShardingSphereRule> result = new
LinkedList<>(metaDataContexts.get().getMetaData().getGlobalRuleMetaData().getRules());
- result.removeIf(each ->
each.getConfiguration().getClass().isAssignableFrom(ruleConfig.getClass()));
- return result;
- }
-
+ // Optimize string comparison rule type.
+ @SuppressWarnings("rawtypes")
@SneakyThrows(Exception.class)
- private void closeStaleGlobalRules() {
- for (ShardingSphereRule each :
metaDataContexts.get().getMetaData().getGlobalRuleMetaData().getRules()) {
- if (each instanceof AutoCloseable) {
- ((AutoCloseable) each).close();
+ private void closeStaleTransactionRule(final RuleConfiguration ruleConfig)
{
+ Map<RuleConfiguration, YamlDataNodeGlobalRuleConfigurationSwapper>
yamlConfigs =
+ new
YamlDataNodeGlobalRuleConfigurationSwapperEngine().swapToYamlRuleConfigurations(Collections.singletonList(ruleConfig));
+ for (Entry<RuleConfiguration,
YamlDataNodeGlobalRuleConfigurationSwapper> entry : yamlConfigs.entrySet()) {
+ if
("transaction".equalsIgnoreCase(entry.getValue().getRuleTagName())) {
+ Optional<TransactionRule> transactionRule =
metaDataContexts.get().getMetaData().getGlobalRuleMetaData().findSingleRule(TransactionRule.class);
+ if (!transactionRule.isPresent()) {
+ return;
+ }
+ ((AutoCloseable) transactionRule.get()).close();
}
}
}
diff --git
a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
index 1f8f9176636..07df29308c8 100644
---
a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
+++
b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.mode.manager;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
-import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.datanode.DataNode;
@@ -48,7 +47,6 @@ import
org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource;
import org.apache.shardingsphere.test.util.PropertiesBuilder;
import org.apache.shardingsphere.test.util.PropertiesBuilder.Property;
-import
org.apache.shardingsphere.transaction.config.TransactionRuleConfiguration;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -236,13 +234,6 @@ class ContextManagerTest {
assertNotNull(contextManager.getDatabase("foo_db"));
}
- @Test
- void assertAlterGlobalRuleConfiguration() {
- RuleConfiguration ruleConfig = new
TransactionRuleConfiguration("LOCAL", null, new Properties());
-
contextManager.getConfigurationContextManager().alterGlobalRuleConfiguration(Collections.singleton(ruleConfig));
-
assertTrue(contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getConfigurations().contains(ruleConfig));
- }
-
@Test
void assertAlterProperties() {
contextManager.getConfigurationContextManager().alterProperties(PropertiesBuilder.build(new
Property("foo", "foo_value")));
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterModeContextManager.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterModeContextManager.java
index 930e89c4cec..05d76eee5a0 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterModeContextManager.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterModeContextManager.java
@@ -29,7 +29,6 @@ import
org.apache.shardingsphere.infra.metadata.version.MetaDataVersion;
import
org.apache.shardingsphere.metadata.persist.service.config.database.DatabaseBasedPersistService;
import
org.apache.shardingsphere.metadata.persist.service.config.global.GlobalPersistService;
import
org.apache.shardingsphere.metadata.persist.service.database.DatabaseMetaDataBasedPersistService;
-import
org.apache.shardingsphere.metadata.persist.service.version.MetaDataVersionBasedPersistService;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.mode.manager.ContextManagerAware;
import org.apache.shardingsphere.single.api.config.SingleRuleConfiguration;
@@ -87,9 +86,8 @@ public final class ClusterModeContextManager implements
ModeContextManager, Cont
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));
DatabaseMetaDataBasedPersistService databaseMetaDataService =
contextManager.getMetaDataContexts().getPersistService().getDatabaseMetaDataService();
- MetaDataVersionBasedPersistService metaDataVersionBasedPersistService
=
contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService();
-
metaDataVersionBasedPersistService.switchActiveVersion(databaseMetaDataService.getTableMetaDataPersistService().persistSchemaMetaData(databaseName,
schemaName, tables));
-
metaDataVersionBasedPersistService.switchActiveVersion(databaseMetaDataService.getViewMetaDataPersistService().persistSchemaMetaData(databaseName,
schemaName, views));
+
databaseMetaDataService.getTableMetaDataPersistService().persist(databaseName,
schemaName, tables);
+
databaseMetaDataService.getViewMetaDataPersistService().persist(databaseName,
schemaName, views);
alterSchemaMetaDataPOJO.getDroppedTables().forEach(each ->
databaseMetaDataService.getTableMetaDataPersistService().delete(databaseName,
schemaName, each));
alterSchemaMetaDataPOJO.getDroppedViews().forEach(each ->
databaseMetaDataService.getViewMetaDataPersistService().delete(databaseName,
schemaName, each));
}
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/ConfigurationChangedSubscriber.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/ConfigurationChangedSubscriber.java
index e5eb35fe22f..562e469ab91 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/ConfigurationChangedSubscriber.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/ConfigurationChangedSubscriber.java
@@ -117,7 +117,8 @@ public final class ConfigurationChangedSubscriber {
if
(!event.getActiveVersion().equals(contextManager.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().getActiveVersionByFullPath(event.getActiveVersionKey())))
{
return;
}
-
contextManager.getConfigurationContextManager().alterGlobalRuleConfiguration(contextManager.getMetaDataContexts().getPersistService().getGlobalRuleService().load(event.getRuleSimpleName()));
+ contextManager.getConfigurationContextManager()
+
.alterGlobalRuleConfiguration(contextManager.getMetaDataContexts().getPersistService().getGlobalRuleService().load(event.getRuleSimpleName()));
}
/**