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 2023/08/18 02:11:13 UTC
[iotdb] 08/09: refactor triggerSnapshot
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 60f4c247da117f3139fecba009fd3e627f778fdf
Author: BUAAserein <18...@buaa.edu.cn>
AuthorDate: Thu Aug 17 18:01:12 2023 +0800
refactor triggerSnapshot
---
.../iotdb/consensus/ratis/RatisConsensus.java | 22 ++++++++--------------
.../iotdb/consensus/ratis/RatisConsensusTest.java | 2 +-
.../consensus/simple/SimpleConsensusTest.java | 10 ++++++----
.../apache/iotdb/db/service/IoTDBShutdownHook.java | 12 +++++++++++-
4 files changed, 26 insertions(+), 20 deletions(-)
diff --git a/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/ratis/RatisConsensus.java b/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/ratis/RatisConsensus.java
index df72318f4ee..88c8072630c 100644
--- a/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/ratis/RatisConsensus.java
+++ b/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/ratis/RatisConsensus.java
@@ -486,18 +486,18 @@ class RatisConsensus implements IConsensus {
* change
*/
@Override
- public ConsensusGenericResponse removeRemotePeer(ConsensusGroupId groupId, Peer peer) {
+ public void removeRemotePeer(ConsensusGroupId groupId, Peer peer) throws ConsensusException {
RaftGroupId raftGroupId = Utils.fromConsensusGroupIdToRaftGroupId(groupId);
RaftGroup group = getGroupInfo(raftGroupId);
RaftPeer peerToRemove = Utils.fromPeerAndPriorityToRaftPeer(peer, DEFAULT_PRIORITY);
// pre-conditions: group exists and myself in this group
if (group == null || !group.getPeers().contains(myself)) {
- return failed(new ConsensusGroupNotExistException(groupId));
+ throw new ConsensusGroupNotExistException(groupId);
}
// pre-condition: peer is a member of groupId
if (!group.getPeers().contains(peerToRemove)) {
- return failed(new PeerNotInConsensusGroupException(groupId, myself));
+ throw new PeerNotInConsensusGroupException(groupId, myself);
}
// update group peer information
@@ -510,10 +510,8 @@ class RatisConsensus implements IConsensus {
try {
reply = sendReconfiguration(RaftGroup.valueOf(raftGroupId, newConfig));
} catch (RatisRequestFailedException e) {
- return failed(e);
+ throw e;
}
-
- return ConsensusGenericResponse.newBuilder().setSuccess(reply.isSuccess()).build();
}
/**
@@ -708,15 +706,11 @@ class RatisConsensus implements IConsensus {
currentDirLength,
filesCount);
- final ConsensusGenericResponse consensusGenericResponse =
- triggerSnapshot(Utils.fromRaftGroupIdToConsensusGroupId(raftGroupId));
- if (consensusGenericResponse.isSuccess()) {
+ try {
+ triggerSnapshot(Utils.fromRaftGroupIdToConsensusGroupId(raftGroupId));
logger.info("Raft group {} took snapshot successfully", raftGroupId);
- } else {
- logger.warn(
- "Raft group {} failed to take snapshot due to",
- raftGroupId,
- consensusGenericResponse.getException());
+ } catch (ConsensusException e) {
+ logger.warn("Raft group {} failed to take snapshot due to", raftGroupId, e);
}
}
}
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 8fcc5b88461..2a999445a80 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
@@ -201,7 +201,7 @@ public class RatisConsensusTest {
servers.get(0).createLocalPeer(gid, peers.subList(0, 1));
doConsensus(servers.get(0), gid, 10, 10);
- Assert.assertTrue(servers.get(0).triggerSnapshot(gid).isSuccess());
+ servers.get(0).triggerSnapshot(gid);
servers.get(1).createLocalPeer(gid, Collections.emptyList());
servers.get(0).addRemotePeer(gid, peers.get(1));
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 6887f25ec9d..84d17212169 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
@@ -34,7 +34,6 @@ import org.apache.iotdb.consensus.common.DataSet;
import org.apache.iotdb.consensus.common.Peer;
import org.apache.iotdb.consensus.common.request.ByteBufferConsensusRequest;
import org.apache.iotdb.consensus.common.request.IConsensusRequest;
-import org.apache.iotdb.consensus.common.response.ConsensusGenericResponse;
import org.apache.iotdb.consensus.config.ConsensusConfig;
import org.apache.iotdb.consensus.exception.*;
@@ -49,7 +48,6 @@ import java.util.Arrays;
import java.util.Collections;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -259,8 +257,12 @@ public class SimpleConsensusTest {
@Test
public void triggerSnapshot() {
- ConsensusGenericResponse response = consensusImpl.triggerSnapshot(dataRegionId);
- assertFalse(response.isSuccess());
+ try {
+ consensusImpl.triggerSnapshot(dataRegionId);
+ assert false;
+ } catch (ConsensusException e) {
+ assert true;
+ }
}
@Test
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/IoTDBShutdownHook.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/IoTDBShutdownHook.java
index 4a6d2eb5044..f9d461ed727 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/IoTDBShutdownHook.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/IoTDBShutdownHook.java
@@ -24,6 +24,7 @@ import org.apache.iotdb.commons.cluster.NodeStatus;
import org.apache.iotdb.commons.concurrent.ThreadName;
import org.apache.iotdb.commons.conf.CommonDescriptor;
import org.apache.iotdb.consensus.ConsensusFactory;
+import org.apache.iotdb.consensus.exception.ConsensusException;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.consensus.DataRegionConsensusImpl;
import org.apache.iotdb.db.consensus.SchemaRegionConsensusImpl;
@@ -85,7 +86,16 @@ public class IoTDBShutdownHook extends Thread {
DataRegionConsensusImpl.getInstance()
.getAllConsensusGroupIds()
.parallelStream()
- .forEach(id -> DataRegionConsensusImpl.getInstance().triggerSnapshot(id));
+ .forEach(
+ id -> {
+ try {
+ DataRegionConsensusImpl.getInstance().triggerSnapshot(id);
+ } catch (ConsensusException e) {
+ logger.warn(
+ "Something wrong happened while calling consensus layer's triggerSnapshot API.",
+ e);
+ }
+ });
}
// close consensusImpl