You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ji...@apache.org on 2020/11/30 01:31:38 UTC
[iotdb] branch cluster_new updated: fix leader is null
This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch cluster_new
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/cluster_new by this push:
new 70df400 fix leader is null
new bd63277 Merge pull request #2134 from mychaow/cluster_new
70df400 is described below
commit 70df4001f874a69cc9c8c710b4045984484946ad
Author: chaow <xu...@gmail.com>
AuthorDate: Fri Nov 27 11:49:06 2020 +0800
fix leader is null
---
.../iotdb/cluster/server/heartbeat/HeartbeatThread.java | 2 +-
.../iotdb/cluster/server/member/DataGroupMember.java | 2 +-
.../org/apache/iotdb/cluster/server/member/RaftMember.java | 14 +++++++-------
3 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/heartbeat/HeartbeatThread.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/heartbeat/HeartbeatThread.java
index 1e1134d..0bfefee 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/server/heartbeat/HeartbeatThread.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/heartbeat/HeartbeatThread.java
@@ -92,7 +92,7 @@ public class HeartbeatThread implements Runnable {
// the leader is considered dead, an election will be started in the next loop
logger.info("{}: The leader {} timed out", memberName, localMember.getLeader());
localMember.setCharacter(NodeCharacter.ELECTOR);
- localMember.setLeader(null);
+ localMember.setLeader(ClusterConstant.EMPTY_NODE);
} else {
logger.debug("{}: Heartbeat from leader {} is still valid", memberName,
localMember.getLeader());
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/DataGroupMember.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/DataGroupMember.java
index 2d0f2cb..de200cf 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/DataGroupMember.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/DataGroupMember.java
@@ -273,7 +273,7 @@ public class DataGroupMember extends RaftMember {
// partition table
synchronized (term) {
term.incrementAndGet();
- setLeader(null);
+ setLeader(ClusterConstant.EMPTY_NODE);
setVoteFor(thisNode);
updateHardState(term.get(), getVoteFor());
setLastHeartbeatReceivedTime(System.currentTimeMillis());
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/RaftMember.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/RaftMember.java
index 67e0651..32a9fb0 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/RaftMember.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/RaftMember.java
@@ -132,7 +132,7 @@ public abstract class RaftMember {
* the lock is to make sure that only one thread can apply snapshot at the same time
*/
private final Object snapshotApplyLock = new Object();
- protected Node thisNode;
+ protected Node thisNode = ClusterConstant.EMPTY_NODE;
/**
* the nodes that belong to the same raft group as thisNode.
*/
@@ -548,7 +548,7 @@ public abstract class RaftMember {
* @return an asynchronous thrift client or null if the caller tries to connect the local node.
*/
public AsyncClient getAsyncHeartbeatClient(Node node) {
- if (node == null) {
+ if (node == null || ClusterConstant.EMPTY_NODE.equals(node)) {
return null;
}
@@ -589,7 +589,7 @@ public abstract class RaftMember {
}
private Client getSyncClient(SyncClientPool pool, Node node) {
- if (node == null) {
+ if (node == null || ClusterConstant.EMPTY_NODE.equals(node)) {
return null;
}
@@ -642,9 +642,9 @@ public abstract class RaftMember {
}
synchronized (waitLeaderCondition) {
if (leader == null) {
- this.leader.getAndSet(ClusterConstant.EMPTY_NODE);
+ this.leader.set(ClusterConstant.EMPTY_NODE);
} else {
- this.leader.getAndSet(leader);
+ this.leader.set(leader);
}
if (!ClusterConstant.EMPTY_NODE.equals(this.leader.get())) {
waitLeaderCondition.notifyAll();
@@ -1258,7 +1258,7 @@ public abstract class RaftMember {
}
private AsyncClient getAsyncClient(Node node, AsyncClientPool pool) {
- if (ClusterConstant.EMPTY_NODE.equals(node)) {
+ if (node == null || ClusterConstant.EMPTY_NODE.equals(node)) {
return null;
}
AsyncClient client = null;
@@ -1427,7 +1427,7 @@ public abstract class RaftMember {
logger.info("{} has update it's term to {}", getName(), newTerm);
term.set(newTerm);
setVoteFor(null);
- setLeader(null);
+ setLeader(ClusterConstant.EMPTY_NODE);
updateHardState(newTerm, getVoteFor());
}