This is an automated email from the ASF dual-hosted git repository.
sunnianjun 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 df7efca7866 Remove StorageResource.wrappedDataSources (#28647)
df7efca7866 is described below
commit df7efca786632a4fa30040fd032ff3359ba6f8b8
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Oct 6 19:12:42 2023 +0800
Remove StorageResource.wrappedDataSources (#28647)
* Remove StorageResource.wrappedDataSources
* Remove StorageResource.wrappedDataSources
* Use getStorageUnits instead of
DatabaseConfiguration.getDataSourcePoolPropertiesMap()
* Refactor DatabaseConfiguration
* Remove DatabaseConfiguration.getDataSources()
---
.../config/database/DatabaseConfiguration.java | 22 ++++-------
.../DataSourceGeneratedDatabaseConfiguration.java | 27 +++++++------
.../DataSourceProvidedDatabaseConfiguration.java | 44 ++++++++++++++++------
.../infra/database/DatabaseTypeEngine.java | 8 ++--
.../metadata/database/ShardingSphereDatabase.java | 10 ++---
.../database/resource/ResourceMetaData.java | 10 +----
.../database/resource/StorageResource.java | 25 +-----------
.../builder/database/DatabaseRulesBuilder.java | 5 ++-
.../state/datasource/DataSourceStateManager.java | 19 ++++++----
...taSourceGeneratedDatabaseConfigurationTest.java | 6 +--
...ataSourceProvidedDatabaseConfigurationTest.java | 6 +--
.../metadata/factory/ExternalMetaDataFactory.java | 4 +-
.../metadata/factory/InternalMetaDataFactory.java | 2 +-
.../factory/NewInternalMetaDataFactory.java | 2 +-
.../metadata/persist/MetaDataPersistService.java | 7 ++--
.../persist/NewMetaDataPersistService.java | 19 ++--------
.../manager/ContextManagerBuilderParameter.java | 2 +-
.../context/ConfigurationContextManager.java | 12 +++---
.../mode/metadata/MetaDataContextsFactory.java | 4 +-
.../mode/metadata/NewMetaDataContextsFactory.java | 4 +-
.../ContextManagerBuilderParameterTest.java | 4 +-
.../test/it/rewrite/engine/SQLRewriterIT.java | 19 +++-------
22 files changed, 117 insertions(+), 144 deletions(-)
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/config/database/DatabaseConfiguration.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/config/database/DatabaseConfiguration.java
index 9f4b4fa6ca8..9ec063f76c0 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/config/database/DatabaseConfiguration.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/config/database/DatabaseConfiguration.java
@@ -18,10 +18,9 @@
package org.apache.shardingsphere.infra.config.database;
import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
-import
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
import
org.apache.shardingsphere.infra.metadata.database.resource.StorageResource;
+import
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
-import javax.sql.DataSource;
import java.util.Collection;
import java.util.Map;
@@ -31,18 +30,18 @@ import java.util.Map;
public interface DatabaseConfiguration {
/**
- * Get data sources.
+ * Get rule configurations.
*
- * @return data sources
+ * @return rule configurations
*/
- Map<String, DataSource> getDataSources();
+ Collection<RuleConfiguration> getRuleConfigurations();
/**
- * Get rule configurations.
+ * Get storage units.
*
- * @return rule configurations
+ * @return storage units
*/
- Collection<RuleConfiguration> getRuleConfigurations();
+ Map<String, StorageUnit> getStorageUnits();
/**
* Get storage resource.
@@ -50,11 +49,4 @@ public interface DatabaseConfiguration {
* @return storage resource
*/
StorageResource getStorageResource();
-
- /**
- * Get data source pool properties map.
- *
- * @return data source pool properties map
- */
- Map<String, DataSourcePoolProperties> getDataSourcePoolPropertiesMap();
}
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceGeneratedDatabaseConfiguration.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceGeneratedDatabaseConfiguration.java
index c96d9dce33c..83b132e3989 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceGeneratedDatabaseConfiguration.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceGeneratedDatabaseConfiguration.java
@@ -27,6 +27,7 @@ import
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePo
import
org.apache.shardingsphere.infra.metadata.database.resource.StorageResource;
import
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNode;
import
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNodeName;
+import
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
import
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapUtils;
import javax.sql.DataSource;
@@ -42,30 +43,34 @@ import java.util.stream.Collectors;
@Getter
public final class DataSourceGeneratedDatabaseConfiguration implements
DatabaseConfiguration {
- private final StorageResource storageResource;
-
private final Collection<RuleConfiguration> ruleConfigurations;
- private final Map<String, DataSourcePoolProperties>
dataSourcePoolPropertiesMap;
+ private final Map<String, StorageUnit> storageUnits;
+
+ private final StorageResource storageResource;
public DataSourceGeneratedDatabaseConfiguration(final Map<String,
DataSourceConfiguration> dataSourceConfigs, final Collection<RuleConfiguration>
ruleConfigs) {
ruleConfigurations = ruleConfigs;
- dataSourcePoolPropertiesMap = dataSourceConfigs.entrySet().stream()
+ Map<String, DataSourcePoolProperties> dataSourcePoolPropertiesMap =
dataSourceConfigs.entrySet().stream()
.collect(Collectors.toMap(Entry::getKey, entry ->
DataSourcePoolPropertiesCreator.create(entry.getValue()), (oldValue,
currentValue) -> oldValue, LinkedHashMap::new));
Map<String, StorageNode> storageUnitNodeMap =
StorageUnitNodeMapUtils.fromDataSourcePoolProperties(dataSourcePoolPropertiesMap);
- storageResource = new
StorageResource(getStorageNodeDataSourceMap(storageUnitNodeMap),
storageUnitNodeMap);
+ Map<StorageNodeName, DataSource> storageNodeDataSources =
getStorageNodeDataSourceMap(dataSourcePoolPropertiesMap, storageUnitNodeMap);
+ storageUnits = new LinkedHashMap<>(dataSourceConfigs.size(), 1F);
+ for (Entry<String, DataSourceConfiguration> entry :
dataSourceConfigs.entrySet()) {
+ String storageUnitName = entry.getKey();
+ StorageNode storageNode = storageUnitNodeMap.get(storageUnitName);
+ DataSource dataSource =
storageNodeDataSources.get(storageNode.getName());
+ StorageUnit storageUnit = new StorageUnit(storageNode,
dataSourcePoolPropertiesMap.get(storageUnitName), dataSource);
+ storageUnits.put(storageUnitName, storageUnit);
+ }
+ storageResource = new StorageResource(storageNodeDataSources,
storageUnitNodeMap);
}
- private Map<StorageNodeName, DataSource> getStorageNodeDataSourceMap(final
Map<String, StorageNode> storageUnitNodeMap) {
+ private Map<StorageNodeName, DataSource> getStorageNodeDataSourceMap(final
Map<String, DataSourcePoolProperties> dataSourcePoolPropertiesMap, final
Map<String, StorageNode> storageUnitNodeMap) {
Map<StorageNodeName, DataSource> result = new
LinkedHashMap<>(storageUnitNodeMap.size(), 1F);
for (Entry<String, StorageNode> entry : storageUnitNodeMap.entrySet())
{
result.computeIfAbsent(entry.getValue().getName(), key ->
DataSourcePoolCreator.create(entry.getKey(),
dataSourcePoolPropertiesMap.get(entry.getKey()), true, result.values()));
}
return result;
}
-
- @Override
- public Map<String, DataSource> getDataSources() {
- return storageResource.getWrappedDataSources();
- }
}
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceProvidedDatabaseConfiguration.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceProvidedDatabaseConfiguration.java
index 14aaf77972c..4da86afb39a 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceProvidedDatabaseConfiguration.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceProvidedDatabaseConfiguration.java
@@ -18,13 +18,15 @@
package org.apache.shardingsphere.infra.config.database.impl;
import lombok.Getter;
-import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.config.database.DatabaseConfiguration;
import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
import
org.apache.shardingsphere.infra.datasource.pool.props.creator.DataSourcePoolPropertiesCreator;
import
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
import
org.apache.shardingsphere.infra.metadata.database.resource.StorageResource;
+import
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNode;
import
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNodeAggregator;
+import
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNodeName;
+import
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
import
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapUtils;
import javax.sql.DataSource;
@@ -37,29 +39,47 @@ import java.util.stream.Collectors;
/**
* Data source provided database configuration.
*/
-@RequiredArgsConstructor
@Getter
public final class DataSourceProvidedDatabaseConfiguration implements
DatabaseConfiguration {
- private final StorageResource storageResource;
-
private final Collection<RuleConfiguration> ruleConfigurations;
- private final Map<String, DataSourcePoolProperties>
dataSourcePoolPropertiesMap;
+ private final Map<String, StorageUnit> storageUnits;
+
+ private final StorageResource storageResource;
public DataSourceProvidedDatabaseConfiguration(final Map<String,
DataSource> dataSources, final Collection<RuleConfiguration> ruleConfigs) {
this.ruleConfigurations = ruleConfigs;
- storageResource = new
StorageResource(StorageNodeAggregator.aggregateDataSources(dataSources),
StorageUnitNodeMapUtils.fromDataSources(dataSources));
- dataSourcePoolPropertiesMap =
createDataSourcePoolPropertiesMap(dataSources);
+ Map<String, StorageNode> storageUnitNodeMap =
StorageUnitNodeMapUtils.fromDataSources(dataSources);
+ Map<StorageNodeName, DataSource> storageNodeDataSources =
StorageNodeAggregator.aggregateDataSources(dataSources);
+ Map<String, DataSourcePoolProperties> dataSourcePoolPropertiesMap =
createDataSourcePoolPropertiesMap(dataSources);
+ storageUnits = new LinkedHashMap<>(dataSourcePoolPropertiesMap.size(),
1F);
+ for (Entry<String, DataSourcePoolProperties> entry :
dataSourcePoolPropertiesMap.entrySet()) {
+ String storageUnitName = entry.getKey();
+ StorageNode storageNode = storageUnitNodeMap.get(storageUnitName);
+ StorageUnit storageUnit = new StorageUnit(storageNode,
dataSourcePoolPropertiesMap.get(storageUnitName),
storageNodeDataSources.get(storageNode.getName()));
+ storageUnits.put(storageUnitName, storageUnit);
+ }
+ storageResource = new StorageResource(storageNodeDataSources,
storageUnitNodeMap);
+ }
+
+ public DataSourceProvidedDatabaseConfiguration(final StorageResource
storageResource,
+ final
Collection<RuleConfiguration> ruleConfigs, final Map<String,
DataSourcePoolProperties> dataSourcePoolPropertiesMap) {
+ this.storageResource = storageResource;
+ this.ruleConfigurations = ruleConfigs;
+ Map<String, StorageNode> storageUnitNodeMap =
StorageUnitNodeMapUtils.fromDataSourcePoolProperties(dataSourcePoolPropertiesMap);
+ Map<StorageNodeName, DataSource> storageNodeDataSources =
storageResource.getDataSources();
+ storageUnits = new LinkedHashMap<>(dataSourcePoolPropertiesMap.size(),
1F);
+ for (Entry<String, DataSourcePoolProperties> entry :
dataSourcePoolPropertiesMap.entrySet()) {
+ String storageUnitName = entry.getKey();
+ StorageNode storageNode = storageUnitNodeMap.get(storageUnitName);
+ StorageUnit storageUnit = new StorageUnit(storageNode,
dataSourcePoolPropertiesMap.get(storageUnitName),
storageNodeDataSources.get(storageNode.getName()));
+ storageUnits.put(storageUnitName, storageUnit);
+ }
}
private Map<String, DataSourcePoolProperties>
createDataSourcePoolPropertiesMap(final Map<String, DataSource> dataSources) {
return dataSources.entrySet().stream().collect(Collectors
.toMap(Entry::getKey, entry ->
DataSourcePoolPropertiesCreator.create(entry.getValue()), (oldValue,
currentValue) -> oldValue, LinkedHashMap::new));
}
-
- @Override
- public Map<String, DataSource> getDataSources() {
- return storageResource.getWrappedDataSources();
- }
}
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/database/DatabaseTypeEngine.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/database/DatabaseTypeEngine.java
index 4fcdd47cfe9..1d8610dc8e7 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/database/DatabaseTypeEngine.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/database/DatabaseTypeEngine.java
@@ -58,7 +58,7 @@ public final class DatabaseTypeEngine {
if (configuredDatabaseType.isPresent()) {
return configuredDatabaseType.get();
}
- Collection<DataSource> enabledDataSources =
DataSourceStateManager.getInstance().getEnabledDataSources(databaseName,
databaseConfig);
+ Collection<DataSource> enabledDataSources =
DataSourceStateManager.getInstance().getEnabledDataSources(databaseName,
databaseConfig).values();
return enabledDataSources.isEmpty() ? getDefaultStorageType() :
getStorageType(enabledDataSources.iterator().next());
}
@@ -86,7 +86,7 @@ public final class DatabaseTypeEngine {
private static Map<String, DataSource> getEnabledDataSources(final
Map<String, ? extends DatabaseConfiguration> databaseConfigs) {
Map<String, DataSource> result = new LinkedHashMap<>();
for (Entry<String, ? extends DatabaseConfiguration> entry :
databaseConfigs.entrySet()) {
-
result.putAll(DataSourceStateManager.getInstance().getEnabledDataSources(entry.getKey(),
entry.getValue().getDataSources()));
+
result.putAll(DataSourceStateManager.getInstance().getEnabledDataSources(entry.getKey(),
entry.getValue()));
}
return result;
}
@@ -99,8 +99,8 @@ public final class DatabaseTypeEngine {
* @return storage types
*/
public static Map<String, DatabaseType> getStorageTypes(final String
databaseName, final DatabaseConfiguration databaseConfig) {
- Map<String, DatabaseType> result = new
LinkedHashMap<>(databaseConfig.getDataSources().size(), 1F);
- Map<String, DataSource> enabledDataSources =
DataSourceStateManager.getInstance().getEnabledDataSources(databaseName,
databaseConfig.getDataSources());
+ Map<String, DatabaseType> result = new
LinkedHashMap<>(databaseConfig.getStorageUnits().size(), 1F);
+ Map<String, DataSource> enabledDataSources =
DataSourceStateManager.getInstance().getEnabledDataSources(databaseName,
databaseConfig);
for (Entry<String, DataSource> entry : enabledDataSources.entrySet()) {
result.put(entry.getKey(), getStorageType(entry.getValue()));
}
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java
index 941f270b12e..ed608937ac1 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java
@@ -24,10 +24,10 @@ import
org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
-import
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
import org.apache.shardingsphere.infra.instance.InstanceContext;
import
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
import
org.apache.shardingsphere.infra.metadata.database.resource.StorageResource;
+import
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilder;
import
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilderMaterial;
@@ -90,7 +90,7 @@ public final class ShardingSphereDatabase {
final DatabaseConfiguration
databaseConfig, final ConfigurationProperties props, final InstanceContext
instanceContext) throws SQLException {
Collection<ShardingSphereRule> databaseRules =
DatabaseRulesBuilder.build(name, databaseConfig, instanceContext);
Map<String, ShardingSphereSchema> schemas = new
ConcurrentHashMap<>(GenericSchemaBuilder
- .build(new GenericSchemaBuilderMaterial(protocolType,
storageTypes, DataSourceStateManager.getInstance().getEnabledDataSources(name,
databaseConfig.getDataSources()), databaseRules,
+ .build(new GenericSchemaBuilderMaterial(protocolType,
storageTypes, DataSourceStateManager.getInstance().getEnabledDataSources(name,
databaseConfig), databaseRules,
props, new
DatabaseTypeRegistry(protocolType).getDefaultSchemaName(name))));
SystemSchemaBuilder.build(name, protocolType,
props).forEach(schemas::putIfAbsent);
return create(name, protocolType, databaseConfig, databaseRules,
schemas);
@@ -121,13 +121,13 @@ public final class ShardingSphereDatabase {
*/
public static ShardingSphereDatabase create(final String name, final
DatabaseType protocolType, final DatabaseConfiguration databaseConfig,
final
Collection<ShardingSphereRule> rules, final Map<String, ShardingSphereSchema>
schemas) {
- ResourceMetaData resourceMetaData =
createResourceMetaData(databaseConfig.getStorageResource(),
databaseConfig.getDataSourcePoolPropertiesMap());
+ ResourceMetaData resourceMetaData =
createResourceMetaData(databaseConfig.getStorageResource(),
databaseConfig.getStorageUnits());
RuleMetaData ruleMetaData = new RuleMetaData(rules);
return new ShardingSphereDatabase(name, protocolType,
resourceMetaData, ruleMetaData, schemas);
}
- private static ResourceMetaData createResourceMetaData(final
StorageResource storageResource, final Map<String, DataSourcePoolProperties>
propsMap) {
- return new ResourceMetaData(storageResource.getDataSources(),
storageResource.getStorageUnitNodeMap(), propsMap);
+ private static ResourceMetaData createResourceMetaData(final
StorageResource storageResource, final Map<String, StorageUnit> storageUnits) {
+ return new ResourceMetaData(storageResource.getDataSources(),
storageUnits);
}
/**
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/ResourceMetaData.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/ResourceMetaData.java
index bd048bd62b7..0b8871ec912 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/ResourceMetaData.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/ResourceMetaData.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.infra.metadata.database.resource;
import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.infra.datasource.pool.props.creator.DataSourcePoolPropertiesCreator;
import
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
import
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNode;
@@ -37,6 +38,7 @@ import java.util.stream.Collectors;
/**
* Resource meta data.
*/
+@RequiredArgsConstructor
@Getter
public final class ResourceMetaData {
@@ -55,14 +57,6 @@ public final class ResourceMetaData {
}
}
- public ResourceMetaData(final Map<StorageNodeName, DataSource>
dataSources, final Map<String, StorageNode> storageNodes, final Map<String,
DataSourcePoolProperties> dataSourcePoolPropsMap) {
- this.dataSources = dataSources;
- storageUnits = new LinkedHashMap<>();
- for (Entry<String, StorageNode> entry : storageNodes.entrySet()) {
- storageUnits.put(entry.getKey(), new StorageUnit(entry.getValue(),
dataSourcePoolPropsMap.get(entry.getKey()),
dataSources.get(entry.getValue().getName())));
- }
- }
-
/**
* Get all instance data source names.
*
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/StorageResource.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/StorageResource.java
index 8c7686ae191..742bb9c7fbe 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/StorageResource.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/StorageResource.java
@@ -18,42 +18,21 @@
package org.apache.shardingsphere.infra.metadata.database.resource;
import lombok.Getter;
-import
org.apache.shardingsphere.infra.datasource.pool.CatalogSwitchableDataSource;
+import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNode;
import
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNodeName;
import javax.sql.DataSource;
-import java.util.LinkedHashMap;
import java.util.Map;
-import java.util.Map.Entry;
/**
* Storage resource.
*/
+@RequiredArgsConstructor
@Getter
public final class StorageResource {
private final Map<StorageNodeName, DataSource> dataSources;
private final Map<String, StorageNode> storageUnitNodeMap;
-
- private final Map<String, DataSource> wrappedDataSources;
-
- public StorageResource(final Map<StorageNodeName, DataSource> dataSources,
final Map<String, StorageNode> storageUnitNodeMap) {
- this.dataSources = dataSources;
- this.storageUnitNodeMap = storageUnitNodeMap;
- wrappedDataSources = createWrappedDataSources();
- }
-
- private Map<String, DataSource> createWrappedDataSources() {
- Map<String, DataSource> result = new
LinkedHashMap<>(storageUnitNodeMap.size(), 1F);
- for (Entry<String, StorageNode> entry : storageUnitNodeMap.entrySet())
{
- StorageNode storageNode = entry.getValue();
- DataSource dataSource = dataSources.get(storageNode.getName());
- if (null != dataSource) {
- result.put(entry.getKey(), new
CatalogSwitchableDataSource(dataSource, storageNode.getCatalog(),
storageNode.getUrl()));
- }
- }
- return result;
- }
}
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/rule/builder/database/DatabaseRulesBuilder.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/rule/builder/database/DatabaseRulesBuilder.java
index f446c5e26b8..18c8ca2dd4f 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/rule/builder/database/DatabaseRulesBuilder.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/rule/builder/database/DatabaseRulesBuilder.java
@@ -59,10 +59,11 @@ public final class DatabaseRulesBuilder {
for (Entry<RuleConfiguration, DatabaseRuleBuilder> entry :
getRuleBuilderMap(databaseConfig).entrySet()) {
RuleConfigurationChecker configChecker =
OrderedSPILoader.getServicesByClass(
RuleConfigurationChecker.class,
Collections.singleton(entry.getKey().getClass())).get(entry.getKey().getClass());
+ Map<String, DataSource> dataSources =
databaseConfig.getStorageUnits().entrySet().stream().collect(Collectors.toMap(Entry::getKey,
storageUnit -> storageUnit.getValue().getDataSource()));
if (null != configChecker) {
- configChecker.check(databaseName, entry.getKey(),
databaseConfig.getDataSources(), result);
+ configChecker.check(databaseName, entry.getKey(), dataSources,
result);
}
- result.add(entry.getValue().build(entry.getKey(), databaseName,
databaseConfig.getDataSources(), result, instanceContext));
+ result.add(entry.getValue().build(entry.getKey(), databaseName,
dataSources, result, instanceContext));
}
return result;
}
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/state/datasource/DataSourceStateManager.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/state/datasource/DataSourceStateManager.java
index 48d7a4c861e..b497f0de0cc 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/state/datasource/DataSourceStateManager.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/state/datasource/DataSourceStateManager.java
@@ -21,18 +21,19 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.infra.config.database.DatabaseConfiguration;
-import
org.apache.shardingsphere.infra.state.datasource.exception.UnavailableDataSourceException;
import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
+import
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
+import
org.apache.shardingsphere.infra.state.datasource.exception.UnavailableDataSourceException;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
-import java.util.Collection;
-import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.stream.Collectors;
/**
* Data source state manager.
@@ -62,14 +63,14 @@ public final class DataSourceStateManager {
* Set data source states when bootstrap.
*
* @param databaseName database name
- * @param dataSources data sources
+ * @param storageUnits storage units
* @param storageDataSourceStates storage node data source state
* @param forceStart whether to force start
*/
- public void initStates(final String databaseName, final Map<String,
DataSource> dataSources, final Map<String, DataSourceState>
storageDataSourceStates, final boolean forceStart) {
+ public void initStates(final String databaseName, final Map<String,
StorageUnit> storageUnits, final Map<String, DataSourceState>
storageDataSourceStates, final boolean forceStart) {
this.forceStart = forceStart;
if (initialized.compareAndSet(false, true)) {
- dataSources.forEach((key, value) -> initState(databaseName,
storageDataSourceStates, key, value));
+ storageUnits.forEach((key, value) -> initState(databaseName,
storageDataSourceStates, key, value.getDataSource()));
}
}
@@ -98,8 +99,10 @@ public final class DataSourceStateManager {
* @param databaseConfig database config
* @return enabled data sources
*/
- public Collection<DataSource> getEnabledDataSources(final String
databaseName, final DatabaseConfiguration databaseConfig) {
- return databaseConfig.getDataSources().isEmpty() ?
Collections.emptyList() : getEnabledDataSources(databaseName,
databaseConfig.getDataSources()).values();
+ public Map<String, DataSource> getEnabledDataSources(final String
databaseName, final DatabaseConfiguration databaseConfig) {
+ Map<String, DataSource> dataSources =
databaseConfig.getStorageUnits().entrySet().stream()
+ .collect(Collectors.toMap(Entry::getKey, entry ->
entry.getValue().getDataSource(), (oldValue, currentValue) -> oldValue,
LinkedHashMap::new));
+ return getEnabledDataSources(databaseName, dataSources);
}
/**
diff --git
a/infra/common/src/test/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceGeneratedDatabaseConfigurationTest.java
b/infra/common/src/test/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceGeneratedDatabaseConfigurationTest.java
index 696d8c75aae..36fa57f9d5d 100644
---
a/infra/common/src/test/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceGeneratedDatabaseConfigurationTest.java
+++
b/infra/common/src/test/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceGeneratedDatabaseConfigurationTest.java
@@ -42,7 +42,7 @@ class DataSourceGeneratedDatabaseConfigurationTest {
@Test
void assertGetDataSources() {
DataSourceGeneratedDatabaseConfiguration databaseConfig =
createDataSourceGeneratedDatabaseConfiguration();
- DataSource dataSource =
databaseConfig.getDataSources().get("normal_db");
+ DataSource dataSource =
databaseConfig.getStorageUnits().get("normal_db").getDataSource();
assertTrue(dataSource instanceof CatalogSwitchableDataSource);
assertTrue(((CatalogSwitchableDataSource) dataSource).getDataSource()
instanceof HikariDataSource);
}
@@ -59,7 +59,7 @@ class DataSourceGeneratedDatabaseConfigurationTest {
@Test
void assertGetStorageUnits() {
DataSourceGeneratedDatabaseConfiguration databaseConfig =
createDataSourceGeneratedDatabaseConfiguration();
- DataSource dataSource =
databaseConfig.getDataSources().get("normal_db");
+ DataSource dataSource =
databaseConfig.getStorageUnits().get("normal_db").getDataSource();
assertTrue(dataSource instanceof CatalogSwitchableDataSource);
assertTrue(((CatalogSwitchableDataSource) dataSource).getDataSource()
instanceof HikariDataSource);
}
@@ -74,7 +74,7 @@ class DataSourceGeneratedDatabaseConfigurationTest {
@Test
void assertGetDataSourcePoolProperties() {
DataSourceGeneratedDatabaseConfiguration databaseConfig =
createDataSourceGeneratedDatabaseConfiguration();
- DataSourcePoolProperties props =
databaseConfig.getDataSourcePoolPropertiesMap().get("normal_db");
+ DataSourcePoolProperties props =
databaseConfig.getStorageUnits().get("normal_db").getDataSourcePoolProperties();
Map<String, Object> poolStandardProps =
props.getPoolPropertySynonyms().getStandardProperties();
assertThat(poolStandardProps.size(), is(6));
assertThat(poolStandardProps.get("connectionTimeoutMilliseconds"),
is(2000L));
diff --git
a/infra/common/src/test/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceProvidedDatabaseConfigurationTest.java
b/infra/common/src/test/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceProvidedDatabaseConfigurationTest.java
index 796b6958975..241d1c56248 100644
---
a/infra/common/src/test/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceProvidedDatabaseConfigurationTest.java
+++
b/infra/common/src/test/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceProvidedDatabaseConfigurationTest.java
@@ -37,7 +37,7 @@ class DataSourceProvidedDatabaseConfigurationTest {
@Test
void assertGetDataSources() {
DataSourceProvidedDatabaseConfiguration databaseConfig =
createDataSourceProvidedDatabaseConfiguration();
- DataSource dataSource = databaseConfig.getDataSources().get("foo_ds");
+ DataSource dataSource =
databaseConfig.getStorageUnits().get("foo_ds").getDataSource();
assertTrue(dataSource instanceof CatalogSwitchableDataSource);
assertTrue(((CatalogSwitchableDataSource) dataSource).getDataSource()
instanceof MockedDataSource);
}
@@ -54,7 +54,7 @@ class DataSourceProvidedDatabaseConfigurationTest {
@Test
void assertGetStorageUnits() {
DataSourceProvidedDatabaseConfiguration databaseConfig =
createDataSourceProvidedDatabaseConfiguration();
- DataSource dataSource = databaseConfig.getDataSources().get("foo_ds");
+ DataSource dataSource =
databaseConfig.getStorageUnits().get("foo_ds").getDataSource();
assertTrue(dataSource instanceof CatalogSwitchableDataSource);
assertTrue(((CatalogSwitchableDataSource) dataSource).getDataSource()
instanceof MockedDataSource);
}
@@ -69,7 +69,7 @@ class DataSourceProvidedDatabaseConfigurationTest {
@Test
void assertGetDataSourcePoolProperties() {
DataSourceProvidedDatabaseConfiguration databaseConfig =
createDataSourceProvidedDatabaseConfiguration();
- DataSourcePoolProperties props =
databaseConfig.getDataSourcePoolPropertiesMap().get("foo_ds");
+ DataSourcePoolProperties props =
databaseConfig.getStorageUnits().get("foo_ds").getDataSourcePoolProperties();
Map<String, Object> poolStandardProps =
props.getPoolPropertySynonyms().getStandardProperties();
assertThat(poolStandardProps.size(), is(0));
Map<String, Object> connStandardProps =
props.getConnectionPropertySynonyms().getStandardProperties();
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/factory/ExternalMetaDataFactory.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/factory/ExternalMetaDataFactory.java
index af473642c20..a336f16bde5 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/factory/ExternalMetaDataFactory.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/factory/ExternalMetaDataFactory.java
@@ -80,7 +80,7 @@ public final class ExternalMetaDataFactory {
Map<String, ShardingSphereDatabase> result = new
HashMap<>(databaseConfigMap.size(), 1F);
for (Entry<String, DatabaseConfiguration> entry :
databaseConfigMap.entrySet()) {
String databaseName = entry.getKey();
- if (!entry.getValue().getDataSources().isEmpty() ||
!systemDatabase.getSystemSchemas().contains(databaseName)) {
+ if (!entry.getValue().getStorageUnits().isEmpty() ||
!systemDatabase.getSystemSchemas().contains(databaseName)) {
Map<String, DatabaseType> storageTypes =
DatabaseTypeEngine.getStorageTypes(entry.getKey(), entry.getValue());
result.put(databaseName.toLowerCase(),
ShardingSphereDatabase.create(databaseName, protocolType, storageTypes,
entry.getValue(), props, instanceContext));
}
@@ -92,7 +92,7 @@ public final class ExternalMetaDataFactory {
final SystemDatabase systemDatabase, final ConfigurationProperties props) {
Map<String, ShardingSphereDatabase> result = new
HashMap<>(systemDatabase.getSystemDatabaseSchemaMap().size(), 1F);
for (String each :
systemDatabase.getSystemDatabaseSchemaMap().keySet()) {
- if (!databaseConfigMap.containsKey(each) ||
databaseConfigMap.get(each).getDataSources().isEmpty()) {
+ if (!databaseConfigMap.containsKey(each) ||
databaseConfigMap.get(each).getStorageUnits().isEmpty()) {
result.put(each.toLowerCase(),
ShardingSphereDatabase.create(each, protocolType, props));
}
}
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/factory/InternalMetaDataFactory.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/factory/InternalMetaDataFactory.java
index 9b5a9a104e0..58a8f3e780e 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/factory/InternalMetaDataFactory.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/factory/InternalMetaDataFactory.java
@@ -73,7 +73,7 @@ public final class InternalMetaDataFactory {
Map<String, ShardingSphereDatabase> result = new
ConcurrentHashMap<>(databaseConfigMap.size(), 1F);
for (Entry<String, DatabaseConfiguration> entry :
databaseConfigMap.entrySet()) {
String databaseName = entry.getKey();
- if (entry.getValue().getDataSources().isEmpty()) {
+ if (entry.getValue().getStorageUnits().isEmpty()) {
result.put(databaseName.toLowerCase(),
ShardingSphereDatabase.create(databaseName, protocolType, props));
} else {
result.put(databaseName.toLowerCase(), create(databaseName,
persistService, entry.getValue(), props, instanceContext));
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/factory/NewInternalMetaDataFactory.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/factory/NewInternalMetaDataFactory.java
index 02e7931f585..34c43929adc 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/factory/NewInternalMetaDataFactory.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/factory/NewInternalMetaDataFactory.java
@@ -74,7 +74,7 @@ public final class NewInternalMetaDataFactory {
Map<String, ShardingSphereDatabase> result = new
ConcurrentHashMap<>(databaseConfigMap.size(), 1F);
for (Entry<String, DatabaseConfiguration> entry :
databaseConfigMap.entrySet()) {
String databaseName = entry.getKey();
- if (entry.getValue().getDataSources().isEmpty()) {
+ if (entry.getValue().getStorageUnits().isEmpty()) {
result.put(databaseName.toLowerCase(),
ShardingSphereDatabase.create(databaseName, protocolType, props));
} else {
result.put(databaseName.toLowerCase(), create(databaseName,
persistService, entry.getValue(), props, instanceContext));
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
index 5274f108d9f..6411201a0e4 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
@@ -114,10 +114,11 @@ public final class MetaDataPersistService implements
MetaDataBasedPersistService
}
private Map<String, DataSourcePoolProperties>
getDataSourcePoolPropertiesMap(final DatabaseConfiguration databaseConfigs) {
- if (!databaseConfigs.getDataSources().isEmpty() &&
databaseConfigs.getDataSourcePoolPropertiesMap().isEmpty()) {
+ if (!databaseConfigs.getStorageUnits().isEmpty() &&
databaseConfigs.getStorageUnits().isEmpty()) {
return
getDataSourcePoolPropertiesMap(databaseConfigs.getStorageResource().getDataSources());
}
- return databaseConfigs.getDataSourcePoolPropertiesMap();
+ return databaseConfigs.getStorageUnits().entrySet().stream()
+ .collect(Collectors.toMap(Entry::getKey, entry ->
entry.getValue().getDataSourcePoolProperties(), (oldValue, currentValue) ->
oldValue, LinkedHashMap::new));
}
private Map<String, DataSourcePoolProperties>
getDataSourcePoolPropertiesMap(final Map<StorageNodeName, DataSource>
storageNodeDataSources) {
@@ -131,7 +132,7 @@ public final class MetaDataPersistService implements
MetaDataBasedPersistService
@Override
public Map<String, DataSourceConfiguration> getEffectiveDataSources(final
String databaseName, final Map<String, ? extends DatabaseConfiguration>
databaseConfigs) {
Map<String, DataSourcePoolProperties> propsMap =
dataSourceUnitService.load(databaseName);
- if (databaseConfigs.containsKey(databaseName) &&
!databaseConfigs.get(databaseName).getDataSources().isEmpty()) {
+ if (databaseConfigs.containsKey(databaseName) &&
!databaseConfigs.get(databaseName).getStorageUnits().isEmpty()) {
databaseConfigs.get(databaseName).getStorageResource().getDataSources().values().forEach(each
-> new DataSourcePoolDestroyer(each).asyncDestroy());
}
return
propsMap.entrySet().stream().collect(Collectors.toMap(Entry::getKey,
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/NewMetaDataPersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/NewMetaDataPersistService.java
index c94ae23f4c0..98b50b1b76f 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/NewMetaDataPersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/NewMetaDataPersistService.java
@@ -23,9 +23,8 @@ import
org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
import
org.apache.shardingsphere.infra.config.rule.decorator.RuleConfigurationDecorator;
import
org.apache.shardingsphere.infra.datasource.pool.config.DataSourceConfiguration;
import
org.apache.shardingsphere.infra.datasource.pool.destroyer.DataSourcePoolDestroyer;
-import
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
import
org.apache.shardingsphere.infra.datasource.pool.props.creator.DataSourcePoolPropertiesCreator;
-import
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNodeName;
+import
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import
org.apache.shardingsphere.metadata.persist.data.ShardingSphereDataPersistService;
@@ -120,18 +119,8 @@ public final class NewMetaDataPersistService implements
MetaDataBasedPersistServ
}
private Map<String, DataSourcePoolProperties>
getDataSourcePoolPropertiesMap(final DatabaseConfiguration databaseConfigs) {
- if (!databaseConfigs.getDataSources().isEmpty() &&
databaseConfigs.getDataSourcePoolPropertiesMap().isEmpty()) {
- return
getDataSourcePoolPropertiesMap(databaseConfigs.getStorageResource().getDataSources());
- }
- return databaseConfigs.getDataSourcePoolPropertiesMap();
- }
-
- private Map<String, DataSourcePoolProperties>
getDataSourcePoolPropertiesMap(final Map<StorageNodeName, DataSource>
storageNodeDataSources) {
- Map<String, DataSourcePoolProperties> result = new
LinkedHashMap<>(storageNodeDataSources.size(), 1F);
- for (Entry<StorageNodeName, DataSource> entry :
storageNodeDataSources.entrySet()) {
- result.put(entry.getKey().getName(),
DataSourcePoolPropertiesCreator.create(entry.getValue()));
- }
- return result;
+ return databaseConfigs.getStorageUnits().entrySet().stream()
+ .collect(Collectors.toMap(Entry::getKey, entry ->
entry.getValue().getDataSourcePoolProperties(), (oldValue, currentValue) ->
oldValue, LinkedHashMap::new));
}
/**
@@ -144,7 +133,7 @@ public final class NewMetaDataPersistService implements
MetaDataBasedPersistServ
@Override
public Map<String, DataSourceConfiguration> getEffectiveDataSources(final
String databaseName, final Map<String, ? extends DatabaseConfiguration>
databaseConfigs) {
Map<String, DataSourcePoolProperties> propsMap =
dataSourceUnitService.load(databaseName);
- if (databaseConfigs.containsKey(databaseName) &&
!databaseConfigs.get(databaseName).getDataSources().isEmpty()) {
+ if (databaseConfigs.containsKey(databaseName) &&
!databaseConfigs.get(databaseName).getStorageUnits().isEmpty()) {
databaseConfigs.get(databaseName).getStorageResource().getDataSources().values().forEach(each
-> new DataSourcePoolDestroyer(each).asyncDestroy());
}
return
propsMap.entrySet().stream().collect(Collectors.toMap(Entry::getKey,
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManagerBuilderParameter.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManagerBuilderParameter.java
index c849d10d02e..d362a7a498f 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManagerBuilderParameter.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManagerBuilderParameter.java
@@ -61,7 +61,7 @@ public final class ContextManagerBuilderParameter {
*/
public boolean isEmpty() {
return globalRuleConfigs.isEmpty() && props.isEmpty()
- && databaseConfigs.entrySet().stream().allMatch(entry ->
entry.getValue().getDataSources().isEmpty() &&
entry.getValue().getRuleConfigurations().isEmpty());
+ && databaseConfigs.entrySet().stream().allMatch(entry ->
entry.getValue().getStorageUnits().isEmpty() &&
entry.getValue().getRuleConfigurations().isEmpty());
}
/**
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 2e38aeafa27..389e43a46d9 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
@@ -279,11 +279,9 @@ public final class ConfigurationContextManager {
*/
public Map<String, ShardingSphereDatabase> renewDatabase(final
ShardingSphereDatabase database, final SwitchingResource resource) {
Map<StorageNodeName, DataSource> newStorageNodes =
getNewStorageNodes(database.getResourceMetaData().getDataSources(), resource);
- Map<String, StorageNode> newStorageUnitNodeMap =
getNewStorageUnitNodes(database.getResourceMetaData().getStorageUnits(),
resource);
- Map<String, DataSourcePoolProperties> propsMap =
database.getResourceMetaData().getStorageUnits().entrySet().stream()
- .collect(Collectors.toMap(Entry::getKey, entry ->
entry.getValue().getDataSourcePoolProperties(), (oldValue, currentValue) ->
currentValue, LinkedHashMap::new));
+ Map<String, StorageUnit> newStorageUnits =
getNewStorageUnits(database.getResourceMetaData().getStorageUnits(), resource);
return Collections.singletonMap(database.getName().toLowerCase(), new
ShardingSphereDatabase(database.getName(), database.getProtocolType(),
- new ResourceMetaData(newStorageNodes, newStorageUnitNodeMap,
propsMap), database.getRuleMetaData(), database.getSchemas()));
+ new ResourceMetaData(newStorageNodes, newStorageUnits),
database.getRuleMetaData(), database.getSchemas()));
}
private Map<StorageNodeName, DataSource> getNewStorageNodes(final
Map<StorageNodeName, DataSource> currentStorageNodes, final SwitchingResource
resource) {
@@ -296,11 +294,11 @@ public final class ConfigurationContextManager {
return result;
}
- private Map<String, StorageNode> getNewStorageUnitNodes(final Map<String,
StorageUnit> currentStorageUnits, final SwitchingResource resource) {
- Map<String, StorageNode> result = new
LinkedHashMap<>(currentStorageUnits.size(), 1F);
+ private Map<String, StorageUnit> getNewStorageUnits(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.getStaleStorageResource().getStorageUnitNodeMap().containsKey(entry.getKey()))
{
- result.put(entry.getKey(), entry.getValue().getStorageNode());
+ result.put(entry.getKey(), entry.getValue());
}
}
return result;
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
index 99ebdec90a7..b013a103fd9 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
@@ -124,8 +124,8 @@ public final class MetaDataContextsFactory {
private static void checkDataSourceStates(final Map<String,
DatabaseConfiguration> databaseConfigs, final Map<String,
StorageNodeDataSource> storageNodes, final boolean force) {
Map<String, DataSourceState> storageDataSourceStates =
getStorageDataSourceStates(storageNodes);
databaseConfigs.forEach((key, value) -> {
- if (!value.getDataSources().isEmpty()) {
- DataSourceStateManager.getInstance().initStates(key,
value.getDataSources(), storageDataSourceStates, force);
+ if (!value.getStorageUnits().isEmpty()) {
+ DataSourceStateManager.getInstance().initStates(key,
value.getStorageUnits(), storageDataSourceStates, force);
}
});
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/NewMetaDataContextsFactory.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/NewMetaDataContextsFactory.java
index f100b404727..33c37307072 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/NewMetaDataContextsFactory.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/NewMetaDataContextsFactory.java
@@ -126,8 +126,8 @@ public final class NewMetaDataContextsFactory {
private static void checkDataSourceStates(final Map<String,
DatabaseConfiguration> databaseConfigs, final Map<String,
StorageNodeDataSource> storageNodes, final boolean force) {
Map<String, DataSourceState> storageDataSourceStates =
getStorageDataSourceStates(storageNodes);
databaseConfigs.forEach((key, value) -> {
- if (!value.getDataSources().isEmpty()) {
- DataSourceStateManager.getInstance().initStates(key,
value.getDataSources(), storageDataSourceStates, force);
+ if (!value.getStorageUnits().isEmpty()) {
+ DataSourceStateManager.getInstance().initStates(key,
value.getStorageUnits(), storageDataSourceStates, force);
}
});
}
diff --git
a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerBuilderParameterTest.java
b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerBuilderParameterTest.java
index cb61b4262de..adf5a5d7d50 100644
---
a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerBuilderParameterTest.java
+++
b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerBuilderParameterTest.java
@@ -73,9 +73,9 @@ class ContextManagerBuilderParameterTest {
assertFalse(new ContextManagerBuilderParameter(null,
mockDatabaseConfigurations(true, false), Collections.emptyMap(),
Collections.emptyList(), new Properties(), null, null, false).isEmpty());
}
- private Map<String, DatabaseConfiguration>
mockDatabaseConfigurations(final boolean isEmptyDataSources, final boolean
isEmptyRuleConfigs) {
+ private Map<String, DatabaseConfiguration>
mockDatabaseConfigurations(final boolean isEmptyStorageUnits, final boolean
isEmptyRuleConfigs) {
DatabaseConfiguration databaseConfig =
mock(DatabaseConfiguration.class, RETURNS_DEEP_STUBS);
-
when(databaseConfig.getDataSources().isEmpty()).thenReturn(isEmptyDataSources);
+
when(databaseConfig.getStorageUnits().isEmpty()).thenReturn(isEmptyStorageUnits);
when(databaseConfig.getRuleConfigurations().isEmpty()).thenReturn(isEmptyRuleConfigs);
return Collections.singletonMap("foo_ds", databaseConfig);
}
diff --git
a/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/SQLRewriterIT.java
b/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/SQLRewriterIT.java
index bd624913c7b..aa641eadc83 100644
---
a/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/SQLRewriterIT.java
+++
b/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/SQLRewriterIT.java
@@ -33,7 +33,6 @@ import
org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
-import
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import org.apache.shardingsphere.infra.parser.sql.SQLStatementParserEngine;
@@ -83,6 +82,7 @@ import java.util.LinkedList;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
+import java.util.stream.Collectors;
import java.util.stream.Stream;
import static org.hamcrest.CoreMatchers.is;
@@ -118,11 +118,12 @@ public abstract class SQLRewriterIT {
YamlRootConfiguration rootConfig = createRootConfiguration(testParams);
DatabaseConfiguration databaseConfig = new
DataSourceProvidedDatabaseConfiguration(
new
YamlDataSourceConfigurationSwapper().swapToDataSources(rootConfig.getDataSources()),
new
YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(rootConfig.getRules()));
- mockDataSource(databaseConfig.getDataSources());
+ Map<String, DataSource> dataSources =
databaseConfig.getStorageUnits().entrySet().stream()
+ .collect(Collectors.toMap(Entry::getKey, entry ->
entry.getValue().getDataSource(), (oldValue, currentValue) -> oldValue,
LinkedHashMap::new));
+ mockDataSource(dataSources);
DatabaseType databaseType =
TypedSPILoader.getService(DatabaseType.class, testParams.getDatabaseType());
- Map<String, StorageUnit> storageUnits =
createStorageUnits(databaseConfig, databaseType);
ResourceMetaData resourceMetaData = mock(ResourceMetaData.class,
RETURNS_DEEP_STUBS);
- when(resourceMetaData.getStorageUnits()).thenReturn(storageUnits);
+
when(resourceMetaData.getStorageUnits()).thenReturn(databaseConfig.getStorageUnits());
String schemaName = new
DatabaseTypeRegistry(databaseType).getDefaultSchemaName(DefaultDatabase.LOGIC_NAME);
SQLStatementParserEngine sqlStatementParserEngine = new
SQLStatementParserEngine(TypedSPILoader.getService(DatabaseType.class,
testParams.getDatabaseType()),
sqlParserRule.getSqlStatementCache(),
sqlParserRule.getParseTreeCache(), sqlParserRule.isSqlCommentParseEnabled());
@@ -170,16 +171,6 @@ public abstract class SQLRewriterIT {
return result;
}
- private Map<String, StorageUnit> createStorageUnits(final
DatabaseConfiguration databaseConfig, final DatabaseType databaseType) {
- Map<String, StorageUnit> result = new
LinkedHashMap<>(databaseConfig.getDataSources().size(), 1F);
- for (Entry<String, DataSource> entry :
databaseConfig.getDataSources().entrySet()) {
- StorageUnit storageUnit = mock(StorageUnit.class,
RETURNS_DEEP_STUBS);
- when(storageUnit.getStorageType()).thenReturn(databaseType);
- result.put(entry.getKey(), storageUnit);
- }
- return result;
- }
-
private CursorStatementContext createCursorDefinition(final String
schemaName, final ShardingSphereMetaData metaData, final
SQLStatementParserEngine sqlStatementParserEngine) {
SQLStatement sqlStatement = sqlStatementParserEngine.parse("CURSOR
t_account_cursor FOR SELECT * FROM t_account WHERE account_id = 100", false);
return (CursorStatementContext) new SQLBindEngine(metaData,
schemaName).bind(sqlStatement, Collections.emptyList());