You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2022/04/29 05:01:39 UTC
[shardingsphere] branch master updated: Check required dataSourceNameAware in ReadwriteSplittingStrategyFactory (#17199)
This is an automated email from the ASF dual-hosted git repository.
panjuan 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 ae9629694ed Check required dataSourceNameAware in ReadwriteSplittingStrategyFactory (#17199)
ae9629694ed is described below
commit ae9629694edda33fff6d2b304aa1d12f2b0a1cc5
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Fri Apr 29 13:01:32 2022 +0800
Check required dataSourceNameAware in ReadwriteSplittingStrategyFactory (#17199)
* Check required dataSourceNameAware in ReadwriteSplittingStrategyFactory
* Check required dataSourceNameAware in ReadwriteSplittingStrategyFactory
---
.../rule/ReadwriteSplittingDataSourceRule.java | 8 +-------
.../strategy/ReadwriteSplittingStrategyFactory.java | 7 ++++++-
.../type/DynamicReadwriteSplittingStrategy.java | 19 ++++++-------------
3 files changed, 13 insertions(+), 21 deletions(-)
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRule.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRule.java
index 91754a9c76a..b8169b02dbb 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRule.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRule.java
@@ -97,14 +97,8 @@ public final class ReadwriteSplittingDataSourceRule {
*/
public Map<String, String> getDataSources(final boolean removeDisabled) {
Map<String, String> result = new LinkedHashMap<>(2, 1);
- String writeDataSourceName = readwriteSplittingStrategy.getWriteDataSource();
- if (null != writeDataSourceName) {
- result.put(ExportableConstants.PRIMARY_DATA_SOURCE_NAME, writeDataSourceName);
- }
+ result.put(ExportableConstants.PRIMARY_DATA_SOURCE_NAME, readwriteSplittingStrategy.getWriteDataSource());
List<String> readDataSourceNames = readwriteSplittingStrategy.getReadDataSources();
- if (readDataSourceNames.isEmpty()) {
- return result;
- }
if (removeDisabled && !disabledDataSourceNames.isEmpty()) {
readDataSourceNames = new LinkedList<>(readDataSourceNames);
readDataSourceNames.removeIf(disabledDataSourceNames::contains);
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/strategy/ReadwriteSplittingStrategyFactory.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/strategy/ReadwriteSplittingStrategyFactory.java
index b2b50a3fb9c..ca6c76cc0c2 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/strategy/ReadwriteSplittingStrategyFactory.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/strategy/ReadwriteSplittingStrategyFactory.java
@@ -22,10 +22,13 @@ import com.google.common.base.Splitter;
import com.google.common.base.Strings;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
+import org.apache.shardingsphere.infra.aware.DataSourceNameAware;
+import org.apache.shardingsphere.infra.aware.DataSourceNameAwareFactory;
import org.apache.shardingsphere.readwritesplitting.strategy.type.DynamicReadwriteSplittingStrategy;
import org.apache.shardingsphere.readwritesplitting.strategy.type.StaticReadwriteSplittingStrategy;
import java.util.List;
+import java.util.Optional;
import java.util.Properties;
/**
@@ -56,6 +59,8 @@ public final class ReadwriteSplittingStrategyFactory {
private static DynamicReadwriteSplittingStrategy createDynamicDataSourceProcessor(final Properties props) {
String autoAwareDataSourceName = props.getProperty("auto-aware-data-source-name");
Preconditions.checkArgument(!Strings.isNullOrEmpty(autoAwareDataSourceName), "Auto aware data source name is required.");
- return new DynamicReadwriteSplittingStrategy(autoAwareDataSourceName);
+ Optional<DataSourceNameAware> dataSourceNameAware = DataSourceNameAwareFactory.newInstance();
+ Preconditions.checkArgument(dataSourceNameAware.isPresent(), "Data source name aware is required.");
+ return new DynamicReadwriteSplittingStrategy(autoAwareDataSourceName, dataSourceNameAware.get());
}
}
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/strategy/type/DynamicReadwriteSplittingStrategy.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/strategy/type/DynamicReadwriteSplittingStrategy.java
index ddaa0198f87..bebce9010aa 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/strategy/type/DynamicReadwriteSplittingStrategy.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-core/src/main/java/org/apache/shardingsphere/readwritesplitting/strategy/type/DynamicReadwriteSplittingStrategy.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.readwritesplitting.strategy.type;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.aware.DataSourceNameAware;
-import org.apache.shardingsphere.infra.aware.DataSourceNameAwareFactory;
import org.apache.shardingsphere.readwritesplitting.strategy.ReadwriteSplittingStrategy;
import java.util.ArrayList;
@@ -28,7 +27,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
-import java.util.Optional;
/**
* Dynamic readwrite splitting strategy.
@@ -39,28 +37,23 @@ public final class DynamicReadwriteSplittingStrategy implements ReadwriteSplitti
private final String autoAwareDataSourceName;
+ private final DataSourceNameAware dataSourceNameAware;
+
@Override
public String getWriteDataSource() {
- return DataSourceNameAwareFactory.newInstance().map(optional -> optional.getPrimaryDataSourceName(autoAwareDataSourceName)).orElse(null);
+ return dataSourceNameAware.getPrimaryDataSourceName(autoAwareDataSourceName);
}
@Override
public List<String> getReadDataSources() {
- Optional<DataSourceNameAware> dataSourceNameAware = DataSourceNameAwareFactory.newInstance();
- if (dataSourceNameAware.isPresent() && dataSourceNameAware.get().getRule().isPresent()) {
- return new ArrayList<>(dataSourceNameAware.get().getReplicaDataSourceNames(autoAwareDataSourceName));
- }
- return Collections.emptyList();
+ return dataSourceNameAware.getRule().isPresent() ? new ArrayList<>(dataSourceNameAware.getReplicaDataSourceNames(autoAwareDataSourceName)) : Collections.emptyList();
}
@Override
public Collection<String> getAllDataSources() {
Collection<String> result = new LinkedList<>();
- Optional<DataSourceNameAware> dataSourceNameAware = DataSourceNameAwareFactory.newInstance();
- if (dataSourceNameAware.isPresent()) {
- result.add(dataSourceNameAware.get().getPrimaryDataSourceName(autoAwareDataSourceName));
- result.addAll(dataSourceNameAware.get().getReplicaDataSourceNames(autoAwareDataSourceName));
- }
+ result.add(dataSourceNameAware.getPrimaryDataSourceName(autoAwareDataSourceName));
+ result.addAll(dataSourceNameAware.getReplicaDataSourceNames(autoAwareDataSourceName));
return result;
}
}