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 <[email protected]>
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"));
     }
 }

Reply via email to