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