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

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

commit b3e5a652116b06deb2d0e9568393d0e1576b991d
Author: BUAAserein <[email protected]>
AuthorDate: Thu Aug 17 17:52:23 2023 +0800

    refactor transferLeader
---
 .../iotdb/confignode/manager/node/NodeManager.java | 15 +++++------
 .../iotdb/consensus/ratis/RatisConsensusTest.java  |  5 +---
 .../consensus/simple/SimpleConsensusTest.java      | 11 +++++---
 .../impl/DataNodeInternalRPCServiceImpl.java       | 31 ++++++++++------------
 4 files changed, 29 insertions(+), 33 deletions(-)

diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/NodeManager.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/NodeManager.java
index 646c7381104..43f1156e55e 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/NodeManager.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/NodeManager.java
@@ -76,7 +76,6 @@ import 
org.apache.iotdb.confignode.rpc.thrift.TRuntimeConfiguration;
 import org.apache.iotdb.confignode.rpc.thrift.TSetDataNodeStatusReq;
 import org.apache.iotdb.consensus.common.DataSet;
 import org.apache.iotdb.consensus.common.Peer;
-import org.apache.iotdb.consensus.common.response.ConsensusGenericResponse;
 import org.apache.iotdb.consensus.exception.ConsensusException;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
@@ -623,13 +622,13 @@ public class NodeManager {
           .setMessage(
               "Transfer ConfigNode leader failed because can not find any 
running ConfigNode.");
     }
-    ConsensusGenericResponse resp =
-        getConsensusManager()
-            .getConsensusImpl()
-            .transferLeader(
-                groupId,
-                new Peer(groupId, newLeader.getConfigNodeId(), 
newLeader.getConsensusEndPoint()));
-    if (!resp.isSuccess()) {
+    try {
+      getConsensusManager()
+          .getConsensusImpl()
+          .transferLeader(
+              groupId,
+              new Peer(groupId, newLeader.getConfigNodeId(), 
newLeader.getConsensusEndPoint()));
+    } catch (ConsensusException e) {
       return new TSStatus(TSStatusCode.REMOVE_CONFIGNODE_ERROR.getStatusCode())
           .setMessage("Remove ConfigNode failed because transfer ConfigNode 
leader failed.");
     }
diff --git 
a/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/ratis/RatisConsensusTest.java
 
b/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/ratis/RatisConsensusTest.java
index 10dcdfcc0c8..8fcc5b88461 100644
--- 
a/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/ratis/RatisConsensusTest.java
+++ 
b/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/ratis/RatisConsensusTest.java
@@ -26,7 +26,6 @@ import org.apache.iotdb.consensus.IStateMachine;
 import org.apache.iotdb.consensus.common.ConsensusGroup;
 import org.apache.iotdb.consensus.common.Peer;
 import org.apache.iotdb.consensus.common.request.ByteBufferConsensusRequest;
-import org.apache.iotdb.consensus.common.response.ConsensusGenericResponse;
 import org.apache.iotdb.consensus.config.RatisConfig;
 import org.apache.iotdb.consensus.exception.ConsensusException;
 import org.apache.iotdb.consensus.exception.RatisRequestFailedException;
@@ -189,9 +188,7 @@ public class RatisConsensusTest {
 
     int leaderIndex = servers.get(0).getLeader(group.getGroupId()).getNodeId() 
- 1;
 
-    ConsensusGenericResponse resp =
-        servers.get(0).transferLeader(group.getGroupId(), 
peers.get((leaderIndex + 1) % 3));
-    Assert.assertTrue(resp.isSuccess());
+    servers.get(0).transferLeader(group.getGroupId(), peers.get((leaderIndex + 
1) % 3));
 
     Peer newLeader = servers.get(0).getLeader(group.getGroupId());
     Assert.assertNotNull(newLeader);
diff --git 
a/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/simple/SimpleConsensusTest.java
 
b/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/simple/SimpleConsensusTest.java
index 57dee99eae7..6887f25ec9d 100644
--- 
a/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/simple/SimpleConsensusTest.java
+++ 
b/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/simple/SimpleConsensusTest.java
@@ -248,10 +248,13 @@ public class SimpleConsensusTest {
 
   @Test
   public void transferLeader() {
-    ConsensusGenericResponse response =
-        consensusImpl.transferLeader(
-            dataRegionId, new Peer(dataRegionId, 1, new TEndPoint("0.0.0.0", 
6667)));
-    assertFalse(response.isSuccess());
+    try {
+      consensusImpl.transferLeader(
+          dataRegionId, new Peer(dataRegionId, 1, new TEndPoint("0.0.0.0", 
6667)));
+      assert false;
+    } catch (ConsensusException e) {
+      assert true;
+    }
   }
 
   @Test
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java
index 3dce5d6f5fa..187a8d7415d 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java
@@ -50,7 +50,6 @@ import org.apache.iotdb.commons.trigger.TriggerInformation;
 import org.apache.iotdb.commons.udf.UDFInformation;
 import org.apache.iotdb.commons.udf.service.UDFManagementService;
 import org.apache.iotdb.consensus.common.Peer;
-import org.apache.iotdb.consensus.common.response.ConsensusGenericResponse;
 import org.apache.iotdb.consensus.exception.ConsensusException;
 import org.apache.iotdb.consensus.exception.PeerNotInConsensusGroupException;
 import org.apache.iotdb.db.auth.AuthorizerManager;
@@ -1461,26 +1460,24 @@ public class DataNodeInternalRPCServiceImpl implements 
IDataNodeRPCService.Iface
 
   private TSStatus transferLeader(ConsensusGroupId regionId, Peer 
newLeaderPeer) {
     TSStatus status = new 
TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
-    ConsensusGenericResponse resp;
-    if (regionId instanceof DataRegionId) {
-      resp = DataRegionConsensusImpl.getInstance().transferLeader(regionId, 
newLeaderPeer);
-    } else if (regionId instanceof SchemaRegionId) {
-      resp = SchemaRegionConsensusImpl.getInstance().transferLeader(regionId, 
newLeaderPeer);
-    } else {
-      status.setCode(TSStatusCode.REGION_LEADER_CHANGE_ERROR.getStatusCode());
-      status.setMessage("[ChangeRegionLeader] Error Region type: " + regionId);
-      return status;
-    }
-
-    if (!resp.isSuccess()) {
+    try {
+      if (regionId instanceof DataRegionId) {
+        DataRegionConsensusImpl.getInstance().transferLeader(regionId, 
newLeaderPeer);
+      } else if (regionId instanceof SchemaRegionId) {
+        SchemaRegionConsensusImpl.getInstance().transferLeader(regionId, 
newLeaderPeer);
+      } else {
+        
status.setCode(TSStatusCode.REGION_LEADER_CHANGE_ERROR.getStatusCode());
+        status.setMessage("[ChangeRegionLeader] Error Region type: " + 
regionId);
+        return status;
+      }
+    } catch (ConsensusException e) {
       LOGGER.warn(
-          "[ChangeRegionLeader] Failed to change the leader of RegionGroup: 
{}",
-          regionId,
-          resp.getException());
+          "[ChangeRegionLeader] Failed to change the leader of RegionGroup: 
{}", regionId, e);
       status.setCode(TSStatusCode.REGION_LEADER_CHANGE_ERROR.getStatusCode());
-      status.setMessage(resp.getException().getMessage());
+      status.setMessage(e.getMessage());
       return status;
     }
+
     status.setMessage(
         "[ChangeRegionLeader] Successfully change the leader of RegionGroup: "
             + regionId

Reply via email to