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 d7b3e6e72a7 Add
DatabaseDiscoveryProviderAlgorithm.getMinEnabledReplicas (#23889)
d7b3e6e72a7 is described below
commit d7b3e6e72a7a77bec907f4d050846a50a4d6ca48
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Feb 1 13:31:26 2023 +0800
Add DatabaseDiscoveryProviderAlgorithm.getMinEnabledReplicas (#23889)
* Add YamlStorageNodeDataSource
* Merge StorageNodeStatus and DataSourceState
* Refactor DatabaseDiscoveryEngine
* Refactor DatabaseDiscoveryEngine
* Add DatabaseDiscoveryProviderAlgorithm.getMinEnabledReplicas
---
.../dbdiscovery/spi/DatabaseDiscoveryProviderAlgorithm.java | 8 ++++++++
.../dbdiscovery/algorithm/DatabaseDiscoveryEngine.java | 7 ++-----
.../fixture/CoreDatabaseDiscoveryProviderAlgorithmFixture.java | 6 ++++++
.../DistSQLDatabaseDiscoveryProviderAlgorithmFixture.java | 6 ++++++
.../mysql/type/MGRMySQLDatabaseDiscoveryProviderAlgorithm.java | 9 +++++++++
...MySQLNormalReplicationDatabaseDiscoveryProviderAlgorithm.java | 9 +++++++++
...GaussNormalReplicationDatabaseDiscoveryProviderAlgorithm.java | 9 +++++++++
7 files changed, 49 insertions(+), 5 deletions(-)
diff --git
a/features/db-discovery/api/src/main/java/org/apache/shardingsphere/dbdiscovery/spi/DatabaseDiscoveryProviderAlgorithm.java
b/features/db-discovery/api/src/main/java/org/apache/shardingsphere/dbdiscovery/spi/DatabaseDiscoveryProviderAlgorithm.java
index ac384b5d54e..4ba87734a69 100644
---
a/features/db-discovery/api/src/main/java/org/apache/shardingsphere/dbdiscovery/spi/DatabaseDiscoveryProviderAlgorithm.java
+++
b/features/db-discovery/api/src/main/java/org/apache/shardingsphere/dbdiscovery/spi/DatabaseDiscoveryProviderAlgorithm.java
@@ -22,6 +22,7 @@ import
org.apache.shardingsphere.infra.algorithm.ShardingSphereAlgorithm;
import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.Collection;
+import java.util.Optional;
/**
* Database discovery provider algorithm.
@@ -53,4 +54,11 @@ public interface DatabaseDiscoveryProviderAlgorithm extends
ShardingSphereAlgori
* @throws SQLException SQL exception
*/
ReplicaDataSourceStatus loadReplicaStatus(DataSource replicaDataSource)
throws SQLException;
+
+ /**
+ * Get min enabled replicas.
+ *
+ * @return min enabled replicas
+ */
+ Optional<Integer> getMinEnabledReplicas();
}
diff --git
a/features/db-discovery/core/src/main/java/org/apache/shardingsphere/dbdiscovery/algorithm/DatabaseDiscoveryEngine.java
b/features/db-discovery/core/src/main/java/org/apache/shardingsphere/dbdiscovery/algorithm/DatabaseDiscoveryEngine.java
index 726a7587d34..6cbe6ef5010 100644
---
a/features/db-discovery/core/src/main/java/org/apache/shardingsphere/dbdiscovery/algorithm/DatabaseDiscoveryEngine.java
+++
b/features/db-discovery/core/src/main/java/org/apache/shardingsphere/dbdiscovery/algorithm/DatabaseDiscoveryEngine.java
@@ -17,10 +17,8 @@
package org.apache.shardingsphere.dbdiscovery.algorithm;
-import com.google.common.base.Strings;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import
org.apache.shardingsphere.dbdiscovery.mysql.type.MySQLNormalReplicationDatabaseDiscoveryProviderAlgorithm;
import
org.apache.shardingsphere.dbdiscovery.spi.DatabaseDiscoveryProviderAlgorithm;
import org.apache.shardingsphere.dbdiscovery.spi.ReplicaDataSourceStatus;
import org.apache.shardingsphere.infra.datasource.state.DataSourceState;
@@ -109,12 +107,11 @@ public final class DatabaseDiscoveryEngine {
eventBusContext.post(new DataSourceDisabledEvent(databaseName,
groupName, entry.getKey(), replicaStorageNode));
continue;
}
- if
(Strings.isNullOrEmpty(databaseDiscoveryProviderAlgorithm.getProps().getProperty("min-enabled-replicas")))
{
+ if
(!databaseDiscoveryProviderAlgorithm.getMinEnabledReplicas().isPresent()) {
eventBusContext.post(new DataSourceDisabledEvent(databaseName,
groupName, entry.getKey(), replicaStorageNode));
continue;
}
- if (!(databaseDiscoveryProviderAlgorithm instanceof
MySQLNormalReplicationDatabaseDiscoveryProviderAlgorithm)
- || enabledReplicasCount >
Integer.parseInt(databaseDiscoveryProviderAlgorithm.getProps().getProperty("min-enabled-replicas",
"0"))) {
+ if (enabledReplicasCount >
databaseDiscoveryProviderAlgorithm.getMinEnabledReplicas().get()) {
enabledReplicasCount -=
disabledDataSourceNames.contains(entry.getKey()) ? 0 : 1;
eventBusContext.post(new DataSourceDisabledEvent(databaseName,
groupName, entry.getKey(), replicaStorageNode));
}
diff --git
a/features/db-discovery/core/src/test/java/org/apache/shardingsphere/dbdiscovery/fixture/CoreDatabaseDiscoveryProviderAlgorithmFixture.java
b/features/db-discovery/core/src/test/java/org/apache/shardingsphere/dbdiscovery/fixture/CoreDatabaseDiscoveryProviderAlgorithmFixture.java
index d03fc796b45..938a44959f7 100644
---
a/features/db-discovery/core/src/test/java/org/apache/shardingsphere/dbdiscovery/fixture/CoreDatabaseDiscoveryProviderAlgorithmFixture.java
+++
b/features/db-discovery/core/src/test/java/org/apache/shardingsphere/dbdiscovery/fixture/CoreDatabaseDiscoveryProviderAlgorithmFixture.java
@@ -23,6 +23,7 @@ import
org.apache.shardingsphere.dbdiscovery.spi.ReplicaDataSourceStatus;
import javax.sql.DataSource;
import java.util.Collection;
+import java.util.Optional;
import java.util.Properties;
@Getter
@@ -49,6 +50,11 @@ public final class
CoreDatabaseDiscoveryProviderAlgorithmFixture implements Data
return new ReplicaDataSourceStatus(true, 0L);
}
+ @Override
+ public Optional<Integer> getMinEnabledReplicas() {
+ return Optional.empty();
+ }
+
@Override
public String getType() {
return "CORE.FIXTURE";
diff --git
a/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/fixture/DistSQLDatabaseDiscoveryProviderAlgorithmFixture.java
b/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/fixture/DistSQLDatabaseDiscoveryProviderAlgorithmFixture.java
index 86baff529e1..f47e2d7e8be 100644
---
a/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/fixture/DistSQLDatabaseDiscoveryProviderAlgorithmFixture.java
+++
b/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/fixture/DistSQLDatabaseDiscoveryProviderAlgorithmFixture.java
@@ -23,6 +23,7 @@ import
org.apache.shardingsphere.dbdiscovery.spi.ReplicaDataSourceStatus;
import javax.sql.DataSource;
import java.util.Collection;
+import java.util.Optional;
import java.util.Properties;
@Getter
@@ -49,6 +50,11 @@ public final class
DistSQLDatabaseDiscoveryProviderAlgorithmFixture implements D
return new ReplicaDataSourceStatus(true, 0L);
}
+ @Override
+ public Optional<Integer> getMinEnabledReplicas() {
+ return Optional.empty();
+ }
+
@Override
public String getType() {
return "DISTSQL.FIXTURE";
diff --git
a/features/db-discovery/provider/mysql/src/main/java/org/apache/shardingsphere/dbdiscovery/mysql/type/MGRMySQLDatabaseDiscoveryProviderAlgorithm.java
b/features/db-discovery/provider/mysql/src/main/java/org/apache/shardingsphere/dbdiscovery/mysql/type/MGRMySQLDatabaseDiscoveryProviderAlgorithm.java
index d36dfab242d..e2a65d64d2f 100644
---
a/features/db-discovery/provider/mysql/src/main/java/org/apache/shardingsphere/dbdiscovery/mysql/type/MGRMySQLDatabaseDiscoveryProviderAlgorithm.java
+++
b/features/db-discovery/provider/mysql/src/main/java/org/apache/shardingsphere/dbdiscovery/mysql/type/MGRMySQLDatabaseDiscoveryProviderAlgorithm.java
@@ -38,6 +38,7 @@ import java.sql.Statement;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;
+import java.util.Optional;
import java.util.Properties;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
@@ -63,9 +64,12 @@ public final class
MGRMySQLDatabaseDiscoveryProviderAlgorithm implements Databas
private Properties props;
+ private int minEnabledReplicas;
+
@Override
public void init(final Properties props) {
this.props = props;
+ minEnabledReplicas =
Integer.parseInt(props.getProperty("min-enabled-replicas", "0"));
}
@Override
@@ -164,6 +168,11 @@ public final class
MGRMySQLDatabaseDiscoveryProviderAlgorithm implements Databas
}
}
+ @Override
+ public Optional<Integer> getMinEnabledReplicas() {
+ return Optional.of(minEnabledReplicas);
+ }
+
@Override
public String getType() {
return "MySQL.MGR";
diff --git
a/features/db-discovery/provider/mysql/src/main/java/org/apache/shardingsphere/dbdiscovery/mysql/type/MySQLNormalReplicationDatabaseDiscoveryProviderAlgorithm.java
b/features/db-discovery/provider/mysql/src/main/java/org/apache/shardingsphere/dbdiscovery/mysql/type/MySQLNormalReplicationDatabaseDiscoveryProviderAlgorithm.java
index e0392edc455..12970f65c30 100644
---
a/features/db-discovery/provider/mysql/src/main/java/org/apache/shardingsphere/dbdiscovery/mysql/type/MySQLNormalReplicationDatabaseDiscoveryProviderAlgorithm.java
+++
b/features/db-discovery/provider/mysql/src/main/java/org/apache/shardingsphere/dbdiscovery/mysql/type/MySQLNormalReplicationDatabaseDiscoveryProviderAlgorithm.java
@@ -33,6 +33,7 @@ import java.sql.Statement;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;
+import java.util.Optional;
import java.util.Properties;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
@@ -52,11 +53,14 @@ public final class
MySQLNormalReplicationDatabaseDiscoveryProviderAlgorithm impl
@Getter
private Properties props;
+ private int minEnabledReplicas;
+
private long delayMillisecondsThreshold;
@Override
public void init(final Properties props) {
this.props = props;
+ minEnabledReplicas =
Integer.parseInt(props.getProperty("min-enabled-replicas", "0"));
delayMillisecondsThreshold =
Long.parseLong(props.getProperty("delay-milliseconds-threshold", "0"));
}
@@ -144,6 +148,11 @@ public final class
MySQLNormalReplicationDatabaseDiscoveryProviderAlgorithm impl
}
}
+ @Override
+ public Optional<Integer> getMinEnabledReplicas() {
+ return Optional.of(minEnabledReplicas);
+ }
+
@Override
public String getType() {
return "MySQL.NORMAL_REPLICATION";
diff --git
a/features/db-discovery/provider/opengauss/src/main/java/org/apache/shardingsphere/dbdiscovery/opengauss/OpenGaussNormalReplicationDatabaseDiscoveryProviderAlgorithm.java
b/features/db-discovery/provider/opengauss/src/main/java/org/apache/shardingsphere/dbdiscovery/opengauss/OpenGaussNormalReplicationDatabaseDiscoveryProviderAlgorithm.java
index b6c96c7b9f6..355d08a5fdd 100644
---
a/features/db-discovery/provider/opengauss/src/main/java/org/apache/shardingsphere/dbdiscovery/opengauss/OpenGaussNormalReplicationDatabaseDiscoveryProviderAlgorithm.java
+++
b/features/db-discovery/provider/opengauss/src/main/java/org/apache/shardingsphere/dbdiscovery/opengauss/OpenGaussNormalReplicationDatabaseDiscoveryProviderAlgorithm.java
@@ -27,6 +27,7 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Collection;
+import java.util.Optional;
import java.util.Properties;
/**
@@ -39,9 +40,12 @@ public final class
OpenGaussNormalReplicationDatabaseDiscoveryProviderAlgorithm
private Properties props;
+ private int minEnabledReplicas;
+
@Override
public void init(final Properties props) {
this.props = props;
+ minEnabledReplicas =
Integer.parseInt(props.getProperty("min-enabled-replicas", "0"));
}
@Override
@@ -73,6 +77,11 @@ public final class
OpenGaussNormalReplicationDatabaseDiscoveryProviderAlgorithm
}
}
+ @Override
+ public Optional<Integer> getMinEnabledReplicas() {
+ return Optional.of(minEnabledReplicas);
+ }
+
@Override
public String getType() {
return "openGauss.NORMAL_REPLICATION";