You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celeborn.apache.org by zh...@apache.org on 2022/11/23 08:00:18 UTC
[incubator-celeborn] branch main updated: [CELEBORN-44][BUG] StateMachine not update currentSnapshot after takeSnapshot cause getLatestSnapshot return null (#996)
This is an automated email from the ASF dual-hosted git repository.
zhouky pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-celeborn.git
The following commit(s) were added to refs/heads/main by this push:
new 735ba4ce [CELEBORN-44][BUG] StateMachine not update currentSnapshot after takeSnapshot cause getLatestSnapshot return null (#996)
735ba4ce is described below
commit 735ba4ce0c6f1f647d530921e1b136ec08713608
Author: William Song <48...@users.noreply.github.com>
AuthorDate: Wed Nov 23 16:00:14 2022 +0800
[CELEBORN-44][BUG] StateMachine not update currentSnapshot after takeSnapshot cause getLatestSnapshot return null (#996)
---
.../deploy/master/clustermeta/ha/StateMachine.java | 1 +
.../clustermeta/ha/MasterStateMachineSuiteJ.java | 25 ++++++++++++++++++++++
2 files changed, 26 insertions(+)
diff --git a/master/src/main/java/org/apache/celeborn/service/deploy/master/clustermeta/ha/StateMachine.java b/master/src/main/java/org/apache/celeborn/service/deploy/master/clustermeta/ha/StateMachine.java
index 9bb4a0e1..24407737 100644
--- a/master/src/main/java/org/apache/celeborn/service/deploy/master/clustermeta/ha/StateMachine.java
+++ b/master/src/main/java/org/apache/celeborn/service/deploy/master/clustermeta/ha/StateMachine.java
@@ -344,6 +344,7 @@ public class StateMachine extends BaseStateMachine {
LOG.warn("Failed to rename snapshot from {} to {}.", tempFile, snapshotFile);
return RaftLog.INVALID_LOG_INDEX;
}
+ storage.loadLatestSnapshot();
} catch (Exception e) {
tempFile.delete();
LOG.warn("Failed to complete snapshot: {}.", snapshotFile, e);
diff --git a/master/src/test/java/org/apache/celeborn/service/deploy/master/clustermeta/ha/MasterStateMachineSuiteJ.java b/master/src/test/java/org/apache/celeborn/service/deploy/master/clustermeta/ha/MasterStateMachineSuiteJ.java
index e53bc594..0ca95e40 100644
--- a/master/src/test/java/org/apache/celeborn/service/deploy/master/clustermeta/ha/MasterStateMachineSuiteJ.java
+++ b/master/src/test/java/org/apache/celeborn/service/deploy/master/clustermeta/ha/MasterStateMachineSuiteJ.java
@@ -31,6 +31,7 @@ import java.util.regex.Matcher;
import org.apache.ratis.server.storage.RaftStorage;
import org.apache.ratis.server.storage.StorageImplUtils;
+import org.apache.ratis.statemachine.SnapshotInfo;
import org.apache.ratis.statemachine.SnapshotRetentionPolicy;
import org.apache.ratis.statemachine.impl.SimpleStateMachineStorage;
import org.junit.Assert;
@@ -87,6 +88,30 @@ public class MasterStateMachineSuiteJ extends RatisBaseSuiteJ {
Assert.assertEquals(response.getSuccess(), true);
}
+ @Test
+ public void testTakeSnapshot() {
+ final StateMachine stateMachine = ratisServer.getMasterStateMachine();
+
+ stateMachine.notifyTermIndexUpdated(2020, 725);
+
+ final long snapshot1Index = stateMachine.takeSnapshot();
+ Assert.assertEquals(725, snapshot1Index);
+
+ SnapshotInfo snapshot1 = stateMachine.getLatestSnapshot();
+ Assert.assertEquals(2020, snapshot1.getTerm());
+ Assert.assertEquals(725, snapshot1.getIndex());
+ Assert.assertEquals(1, snapshot1.getFiles().size());
+
+ stateMachine.notifyTermIndexUpdated(2020, 1005);
+ final long snapshot2Index = stateMachine.takeSnapshot();
+ Assert.assertEquals(1005, snapshot2Index);
+
+ SnapshotInfo latest = stateMachine.getLatestSnapshot();
+ Assert.assertEquals(2020, latest.getTerm());
+ Assert.assertEquals(1005, latest.getIndex());
+ Assert.assertEquals(1, latest.getFiles().size());
+ }
+
@Test
public void testSnapshotCleanup() throws IOException {
StateMachine stateMachine = ratisServer.getMasterStateMachine();