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());
       }