This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 23f1db2f568 Refactor ReadDataSourcesFilter (#36321)
23f1db2f568 is described below
commit 23f1db2f568090b8b3c09ba3e076133b231d5064
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Aug 17 13:40:00 2025 +0800
Refactor ReadDataSourcesFilter (#36321)
---
.../StandardReadwriteSplittingDataSourceRouter.java | 8 ++++++--
.../route/standard/filter/ReadDataSourcesFilter.java | 5 +----
.../{ => type}/DisabledReadDataSourcesFilter.java | 3 ++-
...litting.route.standard.filter.ReadDataSourcesFilter | 18 ------------------
.../route/ReadwriteSplittingDataSourceRouterTest.java | 4 ++--
.../filter/DisabledReadDataSourcesFilterTest.java | 3 ++-
6 files changed, 13 insertions(+), 28 deletions(-)
diff --git
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/StandardReadwriteSplittingDataSourceRouter.java
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/StandardReadwriteSplittingDataSourceRouter.java
index 9c4ab1de94e..0ea5ef0c038 100644
---
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/StandardReadwriteSplittingDataSourceRouter.java
+++
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/StandardReadwriteSplittingDataSourceRouter.java
@@ -17,10 +17,12 @@
package org.apache.shardingsphere.readwritesplitting.route.standard;
-import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
import
org.apache.shardingsphere.readwritesplitting.route.standard.filter.ReadDataSourcesFilter;
+import
org.apache.shardingsphere.readwritesplitting.route.standard.filter.type.DisabledReadDataSourcesFilter;
import
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceGroupRule;
+import java.util.Collection;
+import java.util.Collections;
import java.util.List;
/**
@@ -28,6 +30,8 @@ import java.util.List;
*/
public final class StandardReadwriteSplittingDataSourceRouter {
+ private static final Collection<ReadDataSourcesFilter> FILTERS =
Collections.singleton(new DisabledReadDataSourcesFilter());
+
/**
* Route to data source.
*
@@ -40,7 +44,7 @@ public final class StandardReadwriteSplittingDataSourceRouter
{
private List<String> getFilteredReadDataSources(final
ReadwriteSplittingDataSourceGroupRule rule) {
List<String> result =
rule.getReadwriteSplittingGroup().getReadDataSources();
- for (ReadDataSourcesFilter each :
ShardingSphereServiceLoader.getServiceInstances(ReadDataSourcesFilter.class)) {
+ for (ReadDataSourcesFilter each : FILTERS) {
result = each.filter(rule, result);
}
return result;
diff --git
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/ReadDataSourcesFilter.java
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/ReadDataSourcesFilter.java
index 8668c6d19d5..60b6a7da31c 100644
---
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/ReadDataSourcesFilter.java
+++
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/ReadDataSourcesFilter.java
@@ -17,8 +17,6 @@
package org.apache.shardingsphere.readwritesplitting.route.standard.filter;
-import org.apache.shardingsphere.infra.spi.ShardingSphereSPI;
-import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
import
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceGroupRule;
import java.util.List;
@@ -26,8 +24,7 @@ import java.util.List;
/**
* Read data sources filter.
*/
-@SingletonSPI
-public interface ReadDataSourcesFilter extends ShardingSphereSPI {
+public interface ReadDataSourcesFilter {
/**
* Filter replica data sources.
diff --git
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/DisabledReadDataSourcesFilter.java
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/type/DisabledReadDataSourcesFilter.java
similarity index 92%
rename from
features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/DisabledReadDataSourcesFilter.java
rename to
features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/type/DisabledReadDataSourcesFilter.java
index 7467b9f4404..f907def62b8 100644
---
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/DisabledReadDataSourcesFilter.java
+++
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/type/DisabledReadDataSourcesFilter.java
@@ -15,8 +15,9 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.readwritesplitting.route.standard.filter;
+package
org.apache.shardingsphere.readwritesplitting.route.standard.filter.type;
+import
org.apache.shardingsphere.readwritesplitting.route.standard.filter.ReadDataSourcesFilter;
import
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceGroupRule;
import java.util.LinkedList;
diff --git
a/features/readwrite-splitting/core/src/main/resources/META-INF/services/org.apache.shardingsphere.readwritesplitting.route.standard.filter.ReadDataSourcesFilter
b/features/readwrite-splitting/core/src/main/resources/META-INF/services/org.apache.shardingsphere.readwritesplitting.route.standard.filter.ReadDataSourcesFilter
deleted file mode 100644
index f5ab693ac77..00000000000
---
a/features/readwrite-splitting/core/src/main/resources/META-INF/services/org.apache.shardingsphere.readwritesplitting.route.standard.filter.ReadDataSourcesFilter
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-org.apache.shardingsphere.readwritesplitting.route.standard.filter.DisabledReadDataSourcesFilter
diff --git
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingDataSourceRouterTest.java
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingDataSourceRouterTest.java
index 85fb0806882..e9c578cbe57 100644
---
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingDataSourceRouterTest.java
+++
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingDataSourceRouterTest.java
@@ -23,7 +23,6 @@ import org.apache.shardingsphere.infra.hint.HintValueContext;
import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
import
org.apache.shardingsphere.readwritesplitting.route.qualified.QualifiedReadwriteSplittingDataSourceRouter;
-import
org.apache.shardingsphere.readwritesplitting.route.standard.filter.ReadDataSourcesFilter;
import
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceGroupRule;
import org.apache.shardingsphere.test.infra.framework.mock.AutoMockExtension;
import org.apache.shardingsphere.test.infra.framework.mock.StaticMockSettings;
@@ -66,10 +65,11 @@ class ReadwriteSplittingDataSourceRouterTest {
@Test
void assertRouteWithStandardRouters() {
+
when(rule.getDisabledDataSourceNames()).thenReturn(Collections.emptyList());
+
when(rule.getReadwriteSplittingGroup().getReadDataSources()).thenReturn(Collections.emptyList());
when(rule.getLoadBalancer().getTargetName(any(),
any())).thenReturn("standard_ds");
ReadwriteSplittingDataSourceRouter router = new
ReadwriteSplittingDataSourceRouter(rule, mock(ConnectionContext.class));
setQualifiedRouters(router,
mock(QualifiedReadwriteSplittingDataSourceRouter.class));
-
when(ShardingSphereServiceLoader.getServiceInstances(ReadDataSourcesFilter.class)).thenReturn(Collections.emptyList());
assertThat(router.route(sqlStatementContext, hintValueContext),
is("standard_ds"));
}
diff --git
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/DisabledReadDataSourcesFilterTest.java
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/DisabledReadDataSourcesFilterTest.java
index a0fb4f425e1..6a826091414 100644
---
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/DisabledReadDataSourcesFilterTest.java
+++
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/DisabledReadDataSourcesFilterTest.java
@@ -19,8 +19,9 @@ package
org.apache.shardingsphere.readwritesplitting.route.standard.filter;
import
org.apache.shardingsphere.infra.algorithm.loadbalancer.random.RandomLoadBalanceAlgorithm;
import
org.apache.shardingsphere.readwritesplitting.config.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
-import
org.apache.shardingsphere.readwritesplitting.transaction.TransactionalReadQueryStrategy;
+import
org.apache.shardingsphere.readwritesplitting.route.standard.filter.type.DisabledReadDataSourcesFilter;
import
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceGroupRule;
+import
org.apache.shardingsphere.readwritesplitting.transaction.TransactionalReadQueryStrategy;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;