This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch dev-1.1.2
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/dev-1.1.2 by this push:
new e10ba09513 [bugfix](fe) fix add follower failed due to conflict socket
. (#10429)
e10ba09513 is described below
commit e10ba09513dea6720f1fb9d15ce06791b175cebc
Author: Lei Zhang <[email protected]>
AuthorDate: Fri Jul 1 11:12:36 2022 +0800
[bugfix](fe) fix add follower failed due to conflict socket . (#10429)
---
.../main/java/org/apache/doris/catalog/Catalog.java | 4 +++-
.../src/main/java/org/apache/doris/ha/BDBHA.java | 19 +++++++++++++++++++
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Catalog.java
b/fe/fe-core/src/main/java/org/apache/doris/catalog/Catalog.java
index 94aa682236..bd8edc57f3 100755
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Catalog.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Catalog.java
@@ -2504,10 +2504,12 @@ public class Catalog {
fe = new Frontend(role, nodeName, host, editLogPort);
frontends.put(nodeName, fe);
+ BDBHA bdbha = (BDBHA) haProtocol;
if (role == FrontendNodeType.FOLLOWER || role ==
FrontendNodeType.REPLICA) {
- ((BDBHA) getHaProtocol()).addHelperSocket(host, editLogPort);
+ bdbha.addHelperSocket(host, editLogPort);
helperNodes.add(Pair.create(host, editLogPort));
}
+ bdbha.removeConflictNodeIfExist(host, editLogPort);
editLog.logAddFrontend(fe);
} finally {
unlock();
diff --git a/fe/fe-core/src/main/java/org/apache/doris/ha/BDBHA.java
b/fe/fe-core/src/main/java/org/apache/doris/ha/BDBHA.java
index bbe7326ef7..0243af66a0 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/ha/BDBHA.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/ha/BDBHA.java
@@ -222,4 +222,23 @@ public class BDBHA implements HAProtocol {
LOG.info("add {}:{} to helper sockets", ip, port);
}
}
+
+ public void removeConflictNodeIfExist(String host, int port) {
+ ReplicationGroupAdmin replicationGroupAdmin =
environment.getReplicationGroupAdmin();
+ if (replicationGroupAdmin == null) {
+ return;
+ }
+
+ List<String> conflictNodes = Lists.newArrayList();
+ Set<ReplicationNode> replicationNodes =
replicationGroupAdmin.getGroup().getElectableNodes();
+ for (ReplicationNode replicationNode : replicationNodes) {
+ if (replicationNode.getHostName().equals(host) &&
replicationNode.getPort() == port) {
+ conflictNodes.add(replicationNode.getName());
+ }
+ }
+
+ for (String conflictNode : conflictNodes) {
+ removeElectableNode(conflictNode);
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]