You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ta...@apache.org on 2020/12/19 17:09:46 UTC

[iotdb] branch cluster_multi_raft updated: keep raft leader in one node && balance data to all raft group

This is an automated email from the ASF dual-hosted git repository.

tanxinyu pushed a commit to branch cluster_multi_raft
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/cluster_multi_raft by this push:
     new 7ee34da  keep raft leader in one node && balance data to all raft group
7ee34da is described below

commit 7ee34da99c33aa1c22457751fe880d049c3834b4
Author: LebronAl <TX...@gmail.com>
AuthorDate: Sun Dec 20 01:08:33 2020 +0800

    keep raft leader in one node && balance data to all raft group
---
 cluster/src/main/java/org/apache/iotdb/cluster/ClusterMain.java      | 5 +++--
 .../apache/iotdb/cluster/server/heartbeat/DataHeartbeatThread.java   | 2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/ClusterMain.java b/cluster/src/main/java/org/apache/iotdb/cluster/ClusterMain.java
index 4d87317..2e4fdda 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/ClusterMain.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/ClusterMain.java
@@ -282,7 +282,7 @@ public class ClusterMain {
     // nodes evenly, and use default strategy for other groups
     SlotPartitionTable.setSlotStrategy(new SlotStrategy() {
       SlotStrategy defaultStrategy = new SlotStrategy.DefaultStrategy();
-      int k = 3;
+      int k = 2;
       @Override
       public int calculateSlotByTime(String storageGroupName, long timestamp, int maxSlotNum) {
         int sgSerialNum = extractSerialNumInSGName(storageGroupName) % k;
@@ -305,10 +305,11 @@ public class ClusterMain {
       }
 
       private int extractSerialNumInSGName(String storageGroupName) {
-        String[] s = storageGroupName.split("_");
+        String[] s = storageGroupName.split("\\.");
         if (s.length != 2) {
           return -1;
         }
+        s[1] = s[1].substring(4);
         try {
           return Integer.parseInt(s[1]);
         } catch (NumberFormatException e) {
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/heartbeat/DataHeartbeatThread.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/heartbeat/DataHeartbeatThread.java
index a56a899..3547c17 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/server/heartbeat/DataHeartbeatThread.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/heartbeat/DataHeartbeatThread.java
@@ -55,7 +55,7 @@ public class DataHeartbeatThread extends HeartbeatThread {
   void startElection() {
     // skip first few elections to let the header have a larger chance to become the leader, so
     // possibly each node will only be one leader at the same time
-    if (!dataGroupMember.getThisNode().equals(dataGroupMember.getHeader()) &&
+    if (!dataGroupMember.getThisNode().equals(dataGroupMember.getMetaGroupMember().getAllNodes().iterator().next()) &&
         skippedElectionNumber < MAX_ELECTIONS_TO_SKIP &&
         !hasHadLeader) {
       skippedElectionNumber++;