You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2022/04/22 12:52:27 UTC
[shardingsphere] branch master updated: Add DatabaseDiscoveryEngine (#17013)
This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 098db67976e Add DatabaseDiscoveryEngine (#17013)
098db67976e is described below
commit 098db67976e438b7667323256637e98cf4f65f50
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Fri Apr 22 20:52:15 2022 +0800
Add DatabaseDiscoveryEngine (#17013)
* Add DatabaseDiscoveryEngine
* Rename useless disabledDataSourceNames parameter of DatabaseDiscoveryType.updatePrimaryDataSource
* Rename useless disabledDataSourceNames parameter of DatabaseDiscoveryType.updatePrimaryDataSource
* Add DatabaseDiscoveryType.determinePrimaryDataSource()
---
.../dbdiscovery/spi/DatabaseDiscoveryType.java | 25 ++++--
.../algorithm/DatabaseDiscoveryEngine.java | 97 ++++++++++++++++++++++
.../dbdiscovery/heartbeat/HeartbeatJob.java | 6 +-
.../dbdiscovery/rule/DatabaseDiscoveryRule.java | 11 +--
.../fixture/CoreFixtureDatabaseDiscoveryType.java | 13 ++-
.../DistSQLFixtureDatabaseDiscoveryType.java | 13 ++-
.../mysql/AbstractDatabaseDiscoveryType.java | 28 ++-----
.../type/ShowSlaveStatusDatabaseDiscoveryType.java | 4 +-
.../mysql/type/MGRDatabaseDiscoveryTypeTest.java | 8 +-
.../ShowSlaveStatusDatabaseDiscoveryTypeTest.java | 6 +-
.../opengauss/OpenGaussDatabaseDiscoveryType.java | 19 +----
.../OpenGaussDatabaseDiscoveryTypeTest.java | 6 +-
12 files changed, 165 insertions(+), 71 deletions(-)
diff --git a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-api/src/main/java/org/apache/shardingsphere/dbdiscovery/spi/DatabaseDiscoveryType.java b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-api/src/main/java/org/apache/shardingsphere/dbdiscovery/spi/DatabaseDiscoveryType.java
index b7d2265e264..7405b6e6121 100644
--- a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-api/src/main/java/org/apache/shardingsphere/dbdiscovery/spi/DatabaseDiscoveryType.java
+++ b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-api/src/main/java/org/apache/shardingsphere/dbdiscovery/spi/DatabaseDiscoveryType.java
@@ -21,7 +21,6 @@ import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithm;
import javax.sql.DataSource;
import java.sql.SQLException;
-import java.util.Collection;
import java.util.Map;
/**
@@ -39,14 +38,12 @@ public interface DatabaseDiscoveryType extends ShardingSphereAlgorithm {
void checkDatabaseDiscoveryConfiguration(String databaseName, Map<String, DataSource> dataSourceMap) throws SQLException;
/**
- * Update primary data source.
- *
- * @param databaseName database name
+ * Determine primary data source.
+ *
* @param dataSourceMap data source map
- * @param disabledDataSourceNames disabled data source names
- * @param groupName group name
+ * @return primary data source name
*/
- void updatePrimaryDataSource(String databaseName, Map<String, DataSource> dataSourceMap, Collection<String> disabledDataSourceNames, String groupName);
+ String determinePrimaryDataSource(Map<String, DataSource> dataSourceMap);
/**
* Update member state.
@@ -63,4 +60,18 @@ public interface DatabaseDiscoveryType extends ShardingSphereAlgorithm {
* @return primary data source
*/
String getPrimaryDataSource();
+
+ /**
+ * Get old primary data source.
+ *
+ * @return old primary data source
+ */
+ String getOldPrimaryDataSource();
+
+ /**
+ * Get old primary data source.
+ *
+ * @param oldPrimaryDataSource old primary data source
+ */
+ void setOldPrimaryDataSource(String oldPrimaryDataSource);
}
diff --git a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/main/java/org/apache/shardingsphere/dbdiscovery/algorithm/DatabaseDiscoveryEngine.java b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/main/java/org/apache/shardingsphere/dbdiscovery/algorithm/DatabaseDiscoveryEngine.java
new file mode 100644
index 00000000000..51f091abbb4
--- /dev/null
+++ b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/main/java/org/apache/shardingsphere/dbdiscovery/algorithm/DatabaseDiscoveryEngine.java
@@ -0,0 +1,97 @@
+/*
+ * 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.
+ */
+
+package org.apache.shardingsphere.dbdiscovery.algorithm;
+
+import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.dbdiscovery.spi.DatabaseDiscoveryType;
+import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
+import org.apache.shardingsphere.infra.metadata.schema.QualifiedDatabase;
+import org.apache.shardingsphere.infra.rule.event.impl.PrimaryDataSourceChangedEvent;
+
+import javax.sql.DataSource;
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Database discovery engine.
+ */
+@RequiredArgsConstructor
+public final class DatabaseDiscoveryEngine {
+
+ private final DatabaseDiscoveryType databaseDiscoveryType;
+
+ /**
+ * Check database discovery configuration.
+ *
+ * @param databaseName database name
+ * @param dataSourceMap data source map
+ * @throws SQLException SQL exception
+ */
+ public void checkDatabaseDiscoveryConfiguration(final String databaseName, final Map<String, DataSource> dataSourceMap) throws SQLException {
+ databaseDiscoveryType.checkDatabaseDiscoveryConfiguration(databaseName, dataSourceMap);
+ }
+
+ /**
+ * Update primary data source.
+ *
+ * @param databaseName database name
+ * @param dataSourceMap data source map
+ * @param disabledDataSourceNames disabled data source names
+ * @param groupName group name
+ */
+ public void updatePrimaryDataSource(final String databaseName, final Map<String, DataSource> dataSourceMap, final Collection<String> disabledDataSourceNames, final String groupName) {
+ String newPrimaryDataSource = databaseDiscoveryType.determinePrimaryDataSource(getActiveDataSourceMap(dataSourceMap, disabledDataSourceNames));
+ if (newPrimaryDataSource.isEmpty()) {
+ return;
+ }
+ if (!newPrimaryDataSource.equals(databaseDiscoveryType.getOldPrimaryDataSource())) {
+ databaseDiscoveryType.setOldPrimaryDataSource(newPrimaryDataSource);
+ ShardingSphereEventBus.getInstance().post(new PrimaryDataSourceChangedEvent(new QualifiedDatabase(databaseName, groupName, newPrimaryDataSource)));
+ }
+ }
+
+ private Map<String, DataSource> getActiveDataSourceMap(final Map<String, DataSource> dataSourceMap, final Collection<String> disabledDataSourceNames) {
+ Map<String, DataSource> result = new HashMap<>(dataSourceMap);
+ if (!disabledDataSourceNames.isEmpty()) {
+ result.entrySet().removeIf(each -> disabledDataSourceNames.contains(each.getKey()));
+ }
+ return result;
+ }
+
+ /**
+ * Update member state.
+ *
+ * @param databaseName database name
+ * @param dataSourceMap data source map
+ * @param groupName group name
+ */
+ public void updateMemberState(final String databaseName, final Map<String, DataSource> dataSourceMap, final String groupName) {
+ databaseDiscoveryType.updateMemberState(databaseName, dataSourceMap, groupName);
+ }
+
+ /**
+ * Get primary data source.
+ *
+ * @return primary data source
+ */
+ public String getPrimaryDataSource() {
+ return databaseDiscoveryType.getPrimaryDataSource();
+ }
+}
diff --git a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/main/java/org/apache/shardingsphere/dbdiscovery/heartbeat/HeartbeatJob.java b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/main/java/org/apache/shardingsphere/dbdiscovery/heartbeat/HeartbeatJob.java
index ab33ab27f97..08516d665c6 100644
--- a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/main/java/org/apache/shardingsphere/dbdiscovery/heartbeat/HeartbeatJob.java
+++ b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/main/java/org/apache/shardingsphere/dbdiscovery/heartbeat/HeartbeatJob.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.dbdiscovery.heartbeat;
import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.dbdiscovery.algorithm.DatabaseDiscoveryEngine;
import org.apache.shardingsphere.dbdiscovery.spi.DatabaseDiscoveryType;
import org.apache.shardingsphere.elasticjob.api.ShardingContext;
import org.apache.shardingsphere.elasticjob.simple.job.SimpleJob;
@@ -44,7 +45,8 @@ public final class HeartbeatJob implements SimpleJob {
@Override
public void execute(final ShardingContext shardingContext) {
- databaseDiscoveryType.updatePrimaryDataSource(schemaName, dataSourceMap, disabledDataSourceNames, groupName);
- databaseDiscoveryType.updateMemberState(schemaName, dataSourceMap, groupName);
+ DatabaseDiscoveryEngine engine = new DatabaseDiscoveryEngine(databaseDiscoveryType);
+ engine.updatePrimaryDataSource(schemaName, dataSourceMap, disabledDataSourceNames, groupName);
+ engine.updateMemberState(schemaName, dataSourceMap, groupName);
}
}
diff --git a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/main/java/org/apache/shardingsphere/dbdiscovery/rule/DatabaseDiscoveryRule.java b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/main/java/org/apache/shardingsphere/dbdiscovery/rule/DatabaseDiscoveryRule.java
index e795be7472e..56ab36c2062 100644
--- a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/main/java/org/apache/shardingsphere/dbdiscovery/rule/DatabaseDiscoveryRule.java
+++ b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/main/java/org/apache/shardingsphere/dbdiscovery/rule/DatabaseDiscoveryRule.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.dbdiscovery.rule;
import com.google.common.base.Strings;
import lombok.Getter;
+import org.apache.shardingsphere.dbdiscovery.algorithm.DatabaseDiscoveryEngine;
import org.apache.shardingsphere.dbdiscovery.algorithm.config.AlgorithmProvidedDatabaseDiscoveryRuleConfiguration;
import org.apache.shardingsphere.dbdiscovery.api.config.DatabaseDiscoveryRuleConfiguration;
import org.apache.shardingsphere.dbdiscovery.api.config.rule.DatabaseDiscoveryDataSourceRuleConfiguration;
@@ -107,17 +108,17 @@ public final class DatabaseDiscoveryRule implements SchemaRule, DataSourceContai
for (Entry<String, DatabaseDiscoveryDataSourceRule> entry : dataSourceRules.entrySet()) {
String groupName = entry.getKey();
DatabaseDiscoveryDataSourceRule dataSourceRule = entry.getValue();
- DatabaseDiscoveryType databaseDiscoveryType = dataSourceRule.getDatabaseDiscoveryType();
+ DatabaseDiscoveryEngine engine = new DatabaseDiscoveryEngine(dataSourceRule.getDatabaseDiscoveryType());
Map<String, DataSource> originalDataSourceMap = new HashMap<>(dataSourceMap);
Collection<String> disabledDataSourceNames = dataSourceRule.getDisabledDataSourceNames();
try {
- databaseDiscoveryType.checkDatabaseDiscoveryConfiguration(databaseName, originalDataSourceMap);
+ engine.checkDatabaseDiscoveryConfiguration(databaseName, originalDataSourceMap);
} catch (final SQLException ex) {
throw new ShardingSphereException(ex);
}
- databaseDiscoveryType.updatePrimaryDataSource(databaseName, originalDataSourceMap, disabledDataSourceNames, groupName);
- dataSourceRule.updatePrimaryDataSourceName(databaseDiscoveryType.getPrimaryDataSource());
- databaseDiscoveryType.updateMemberState(databaseName, originalDataSourceMap, groupName);
+ engine.updatePrimaryDataSource(databaseName, originalDataSourceMap, disabledDataSourceNames, groupName);
+ dataSourceRule.updatePrimaryDataSourceName(engine.getPrimaryDataSource());
+ engine.updateMemberState(databaseName, originalDataSourceMap, groupName);
}
}
diff --git a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/test/java/org/apache/shardingsphere/dbdiscovery/fixture/CoreFixtureDatabaseDiscoveryType.java b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/test/java/org/apache/shardingsphere/dbdiscovery/fixture/CoreFixtureDatabaseDiscoveryType.java
index eb2cf58e694..ff3f6d2a27b 100644
--- a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/test/java/org/apache/shardingsphere/dbdiscovery/fixture/CoreFixtureDatabaseDiscoveryType.java
+++ b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-core/src/test/java/org/apache/shardingsphere/dbdiscovery/fixture/CoreFixtureDatabaseDiscoveryType.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.dbdiscovery.fixture;
import org.apache.shardingsphere.dbdiscovery.spi.DatabaseDiscoveryType;
import javax.sql.DataSource;
-import java.util.Collection;
import java.util.Map;
public final class CoreFixtureDatabaseDiscoveryType implements DatabaseDiscoveryType {
@@ -30,7 +29,8 @@ public final class CoreFixtureDatabaseDiscoveryType implements DatabaseDiscovery
}
@Override
- public void updatePrimaryDataSource(final String databaseName, final Map<String, DataSource> activeDataSourceMap, final Collection<String> disabledDataSourceNames, final String groupName) {
+ public String determinePrimaryDataSource(final Map<String, DataSource> dataSourceMap) {
+ return "primary";
}
@Override
@@ -42,6 +42,15 @@ public final class CoreFixtureDatabaseDiscoveryType implements DatabaseDiscovery
return "primary";
}
+ @Override
+ public String getOldPrimaryDataSource() {
+ return null;
+ }
+
+ @Override
+ public void setOldPrimaryDataSource(final String oldPrimaryDataSource) {
+ }
+
@Override
public String getType() {
return "CORE.FIXTURE";
diff --git a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/shardingsphere-db-discovery-distsql-handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/fixture/DistSQLFixtureDatabaseDiscoveryType.java b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/shardingsphere-db-discovery-distsql-handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/fixture/DistSQLFixtureDatabas [...]
index 338360b5ecf..083b27e127c 100644
--- a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/shardingsphere-db-discovery-distsql-handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/fixture/DistSQLFixtureDatabaseDiscoveryType.java
+++ b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/shardingsphere-db-discovery-distsql-handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/fixture/DistSQLFixtureDatabaseDiscoveryType.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.dbdiscovery.distsql.handler.fixture;
import org.apache.shardingsphere.dbdiscovery.spi.DatabaseDiscoveryType;
import javax.sql.DataSource;
-import java.util.Collection;
import java.util.Map;
public final class DistSQLFixtureDatabaseDiscoveryType implements DatabaseDiscoveryType {
@@ -30,7 +29,8 @@ public final class DistSQLFixtureDatabaseDiscoveryType implements DatabaseDiscov
}
@Override
- public void updatePrimaryDataSource(final String databaseName, final Map<String, DataSource> dataSourceMap, final Collection<String> disabledDataSourceNames, final String groupName) {
+ public String determinePrimaryDataSource(final Map<String, DataSource> dataSourceMap) {
+ return null;
}
@Override
@@ -42,6 +42,15 @@ public final class DistSQLFixtureDatabaseDiscoveryType implements DatabaseDiscov
return null;
}
+ @Override
+ public String getOldPrimaryDataSource() {
+ return null;
+ }
+
+ @Override
+ public void setOldPrimaryDataSource(final String oldPrimaryDataSource) {
+ }
+
@Override
public String getType() {
return "DISTSQL.FIXTURE";
diff --git a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-mysql/src/main/java/org/apache/shardingsphere/dbdiscovery/mysql/AbstractDatabaseDiscoveryType.java b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-mysql/src/main/java/org/apache/shardingsphere/dbdiscovery/mysql/AbstractDatabaseDiscoveryType.java
index 51ca2431d95..f552c327822 100644
--- a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-mysql/src/main/java/org/apache/shardingsphere/dbdiscovery/mysql/AbstractDatabaseDiscoveryType.java
+++ b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-mysql/src/main/java/org/apache/shardingsphere/dbdiscovery/mysql/AbstractDatabaseDiscoveryType.java
@@ -17,23 +17,22 @@
package org.apache.shardingsphere.dbdiscovery.mysql;
+import lombok.Getter;
+import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.dbdiscovery.spi.DatabaseDiscoveryType;
-import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
-import org.apache.shardingsphere.infra.metadata.schema.QualifiedDatabase;
-import org.apache.shardingsphere.infra.rule.event.impl.PrimaryDataSourceChangedEvent;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
-import java.util.Collection;
-import java.util.HashMap;
import java.util.Map;
/**
* Abstract database discovery type.
*/
+@Getter
+@Setter
@Slf4j
public abstract class AbstractDatabaseDiscoveryType implements DatabaseDiscoveryType {
@@ -42,22 +41,7 @@ public abstract class AbstractDatabaseDiscoveryType implements DatabaseDiscovery
protected abstract String getPrimaryDataSourceURL(Statement statement) throws SQLException;
@Override
- public void updatePrimaryDataSource(final String databaseName, final Map<String, DataSource> dataSourceMap, final Collection<String> disabledDataSourceNames, final String groupName) {
- Map<String, DataSource> activeDataSourceMap = new HashMap<>(dataSourceMap);
- if (!disabledDataSourceNames.isEmpty()) {
- activeDataSourceMap.entrySet().removeIf(each -> disabledDataSourceNames.contains(each.getKey()));
- }
- String newPrimaryDataSource = determinePrimaryDataSource(activeDataSourceMap);
- if (newPrimaryDataSource.isEmpty()) {
- return;
- }
- if (!newPrimaryDataSource.equals(oldPrimaryDataSource)) {
- oldPrimaryDataSource = newPrimaryDataSource;
- ShardingSphereEventBus.getInstance().post(new PrimaryDataSourceChangedEvent(new QualifiedDatabase(databaseName, groupName, newPrimaryDataSource)));
- }
- }
-
- private String determinePrimaryDataSource(final Map<String, DataSource> dataSourceMap) {
+ public final String determinePrimaryDataSource(final Map<String, DataSource> dataSourceMap) {
String primaryDataSourceURL = findPrimaryDataSourceURL(dataSourceMap);
return findPrimaryDataSourceName(primaryDataSourceURL, dataSourceMap);
}
@@ -94,7 +78,7 @@ public abstract class AbstractDatabaseDiscoveryType implements DatabaseDiscovery
}
@Override
- public String getPrimaryDataSource() {
+ public final String getPrimaryDataSource() {
return oldPrimaryDataSource;
}
}
diff --git a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-mysql/src/main/java/org/apache/shardingsphere/dbdiscovery/mysql/type/ShowSlaveStatusDatabaseDiscoveryType.java b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-mysql/src/main/java/org/apache/shardingsphere/dbdiscovery/mysql/type/ShowSlaveStatusDatabaseDiscoveryType.java
index ced3a18c81a..d04d3fce8d9 100644
--- a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-mysql/src/main/java/org/apache/shardingsphere/dbdiscovery/mysql/type/ShowSlaveStatusDatabaseDiscoveryType.java
+++ b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-mysql/src/main/java/org/apache/shardingsphere/dbdiscovery/mysql/type/ShowSlaveStatusDatabaseDiscoveryType.java
@@ -42,13 +42,13 @@ import java.util.Properties;
/**
* Show slave status database discovery type.
*/
+@Getter
+@Setter
@Slf4j
public final class ShowSlaveStatusDatabaseDiscoveryType extends AbstractDatabaseDiscoveryType {
private static final String SHOW_SLAVE_STATUS = "SHOW SLAVE STATUS";
- @Getter
- @Setter
private Properties props = new Properties();
@Override
diff --git a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-mysql/src/test/java/org/apache/shardingsphere/dbdiscovery/mysql/type/MGRDatabaseDiscoveryTypeTest.java b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-mysql/src/test/java/org/apache/shardingsphere/dbdiscovery/mysql/type/MGRDatabaseDiscoveryTypeTest.java
index ab9429cb785..a9b1967fe1d 100644
--- a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-mysql/src/test/java/org/apache/shardingsphere/dbdiscovery/mysql/type/MGRDatabaseDiscoveryTypeTest.java
+++ b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-mysql/src/test/java/org/apache/shardingsphere/dbdiscovery/mysql/type/MGRDatabaseDiscoveryTypeTest.java
@@ -35,7 +35,6 @@ import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
-import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@@ -45,8 +44,8 @@ import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.mockStatic;
-import static org.mockito.Mockito.when;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
public final class MGRDatabaseDiscoveryTypeTest {
@@ -92,7 +91,7 @@ public final class MGRDatabaseDiscoveryTypeTest {
}
@Test
- public void assertUpdatePrimaryDataSource() throws SQLException {
+ public void assertDeterminePrimaryDataSource() throws SQLException {
List<DataSource> dataSources = new LinkedList<>();
List<Connection> connections = new LinkedList<>();
List<Statement> statements = new LinkedList<>();
@@ -122,8 +121,7 @@ public final class MGRDatabaseDiscoveryTypeTest {
dataSourceMap.put(String.format("ds_%s", i), dataSources.get(i));
}
mgrDatabaseDiscoveryType.getProps().setProperty("group-name", "group_name");
- mgrDatabaseDiscoveryType.updatePrimaryDataSource("discovery_db", dataSourceMap, Collections.emptySet(), "group_name");
- assertThat(mgrDatabaseDiscoveryType.getPrimaryDataSource(), is("ds_2"));
+ assertThat(mgrDatabaseDiscoveryType.determinePrimaryDataSource(dataSourceMap), is("ds_2"));
}
// TODO Fix me
diff --git a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-mysql/src/test/java/org/apache/shardingsphere/dbdiscovery/mysql/type/ShowSlaveStatusDatabaseDiscoveryTypeTest.java b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-mysql/src/test/java/org/apache/shardingsphere/dbdiscovery/mysql/type/ShowSlaveStatusDatabaseDiscoveryTypeTest.java
index e539d8dd839..3ae250027ef 100644
--- a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-mysql/src/test/java/org/apache/shardingsphere/dbdiscovery/mysql/type/ShowSlaveStatusDatabaseDiscoveryTypeTest.java
+++ b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-mysql/src/test/java/org/apache/shardingsphere/dbdiscovery/mysql/type/ShowSlaveStatusDatabaseDiscoveryTypeTest.java
@@ -25,7 +25,6 @@ import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
-import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -47,12 +46,11 @@ public final class ShowSlaveStatusDatabaseDiscoveryTypeTest {
}
@Test
- public void assertUpdatePrimaryDataSource() throws SQLException {
+ public void assertDeterminePrimaryDataSource() throws SQLException {
Map<String, DataSource> dataSourceMap = new HashMap<>(2, 1);
dataSourceMap.put("ds_0", getDataSource(false, 3306));
dataSourceMap.put("ds_1", getDataSource(true, 3307));
- showSlaveStatusDatabaseDiscoveryType.updatePrimaryDataSource("discovery_db", dataSourceMap, Collections.emptySet(), "group_name");
- assertThat(showSlaveStatusDatabaseDiscoveryType.getPrimaryDataSource(), is("ds_0"));
+ assertThat(showSlaveStatusDatabaseDiscoveryType.determinePrimaryDataSource(dataSourceMap), is("ds_0"));
}
private DataSource getDataSource(final boolean slave, final int port) throws SQLException {
diff --git a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-opengauss/src/main/java/org/apache/shardingsphere/dbdiscovery/opengauss/OpenGaussDatabaseDiscoveryType.java b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-opengauss/src/main/java/org/apache/shardingsphere/dbdiscovery/opengauss/OpenGaussDatabaseDiscoveryType.java
index e152c48e1c3..3187e0bc92b 100644
--- a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-opengauss/src/main/java/org/apache/shardingsphere/dbdiscovery/opengauss/OpenGaussDatabaseDiscoveryType.java
+++ b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-opengauss/src/main/java/org/apache/shardingsphere/dbdiscovery/opengauss/OpenGaussDatabaseDiscoveryType.java
@@ -22,9 +22,7 @@ import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.dbdiscovery.spi.DatabaseDiscoveryType;
import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
-import org.apache.shardingsphere.infra.metadata.schema.QualifiedDatabase;
import org.apache.shardingsphere.infra.rule.event.impl.DataSourceDisabledEvent;
-import org.apache.shardingsphere.infra.rule.event.impl.PrimaryDataSourceChangedEvent;
import org.apache.shardingsphere.infra.storage.StorageNodeDataSource;
import org.apache.shardingsphere.infra.storage.StorageNodeRole;
import org.apache.shardingsphere.infra.storage.StorageNodeStatus;
@@ -34,7 +32,6 @@ import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
-import java.util.Collection;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
@@ -42,6 +39,8 @@ import java.util.Properties;
/**
* OpenGauss database discovery type.
*/
+@Getter
+@Setter
@Slf4j
public final class OpenGaussDatabaseDiscoveryType implements DatabaseDiscoveryType {
@@ -59,19 +58,7 @@ public final class OpenGaussDatabaseDiscoveryType implements DatabaseDiscoveryTy
}
@Override
- public void updatePrimaryDataSource(final String databaseName, final Map<String, DataSource> dataSourceMap, final Collection<String> disabledDataSourceNames, final String groupName) {
- String newPrimaryDataSource = determinePrimaryDataSource(dataSourceMap);
- if (newPrimaryDataSource.isEmpty()) {
- oldPrimaryDataSource = "";
- return;
- }
- if (!newPrimaryDataSource.equals(oldPrimaryDataSource)) {
- oldPrimaryDataSource = newPrimaryDataSource;
- ShardingSphereEventBus.getInstance().post(new PrimaryDataSourceChangedEvent(new QualifiedDatabase(databaseName, groupName, newPrimaryDataSource)));
- }
- }
-
- private String determinePrimaryDataSource(final Map<String, DataSource> dataSourceMap) {
+ public String determinePrimaryDataSource(final Map<String, DataSource> dataSourceMap) {
String result = "";
for (Entry<String, DataSource> entry : dataSourceMap.entrySet()) {
try (Connection connection = entry.getValue().getConnection();
diff --git a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-opengauss/src/test/java/org/apache/shardingsphere/dbdiscovery/opengauss/OpenGaussDatabaseDiscoveryTypeTest.java b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-opengauss/src/test/java/org/apache/shardingsphere/dbdiscovery/opengauss/OpenGaussDatabaseDiscoveryTypeTest.java
index d4d8813a3cd..488ac0f1483 100644
--- a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-opengauss/src/test/java/org/apache/shardingsphere/dbdiscovery/opengauss/OpenGaussDatabaseDiscoveryTypeTest.java
+++ b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-provider/shardingsphere-db-discovery-opengauss/src/test/java/org/apache/shardingsphere/dbdiscovery/opengauss/OpenGaussDatabaseDiscoveryTypeTest.java
@@ -25,7 +25,6 @@ import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
-import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@@ -64,7 +63,7 @@ public final class OpenGaussDatabaseDiscoveryTypeTest {
}
@Test
- public void assertUpdatePrimaryDataSource() throws SQLException {
+ public void assertDeterminePrimaryDataSource() throws SQLException {
List<DataSource> dataSources = new LinkedList<>();
List<Connection> connections = new LinkedList<>();
List<Statement> statements = new LinkedList<>();
@@ -91,7 +90,6 @@ public final class OpenGaussDatabaseDiscoveryTypeTest {
for (int i = 0; i < 3; i++) {
dataSourceMap.put(String.format("ds_%s", i), dataSources.get(i));
}
- ogHaType.updatePrimaryDataSource("discovery_db", dataSourceMap, Collections.emptySet(), "group_name");
- assertThat(ogHaType.getPrimaryDataSource(), is("ds_2"));
+ assertThat(ogHaType.determinePrimaryDataSource(dataSourceMap), is("ds_2"));
}
}