This is an automated email from the ASF dual-hosted git repository. chengpan pushed a commit to branch branch-0.2 in repository https://gitbox.apache.org/repos/asf/incubator-celeborn.git
commit 4ea0dd73b07fbd68da0e7e66be836e7781dc56f1 Author: William Song <[email protected]> AuthorDate: Wed Dec 14 14:26:31 2022 +0800 [CELEBORN-133] Improve snapshot loading (#1078) Co-authored-by: Cheng Pan <[email protected]> --- .../deploy/master/clustermeta/ha/StateMachine.java | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) 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 d6a82db6..51e8dcba 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 @@ -17,7 +17,10 @@ package org.apache.celeborn.service.deploy.master.clustermeta.ha; -import static org.apache.ratis.util.LifeCycle.State.*; +import static org.apache.ratis.util.LifeCycle.State.PAUSED; +import static org.apache.ratis.util.LifeCycle.State.PAUSING; +import static org.apache.ratis.util.LifeCycle.State.RUNNING; +import static org.apache.ratis.util.LifeCycle.State.STARTING; import java.io.File; import java.io.FileNotFoundException; @@ -207,6 +210,10 @@ public class StateMachine extends BaseStateMachine { if (snapshot == null) { return; } + if (snapshot.getTermIndex().compareTo(getLastAppliedTermIndex()) <= 0) { + LOG.info("obsolete snapshot provided: {}", snapshot.getTermIndex()); + return; + } LOG.info("Loading Snapshot {}.", snapshot); final File snapshotFile = snapshot.getFile().getPath().toFile(); if (!snapshotFile.exists()) { @@ -216,16 +223,18 @@ public class StateMachine extends BaseStateMachine { try { setLastAppliedTermIndex(snapshot.getTermIndex()); install(snapshotFile); - } catch (Exception e) { - throw new IOException(String.format("Failed to load snapshot %s", snapshot), e); + } catch (IOException rethrow) { + LOG.error("Failed to load snapshot {}", snapshot); + throw rethrow; } } - private void install(File snapshotFile) { + private void install(File snapshotFile) throws IOException { try { metaHandler.loadSnapShot(snapshotFile); - } catch (Exception e) { - LOG.warn("Failed to install snapshot!", e); + } catch (IOException rethrow) { + LOG.warn("Failed to install snapshot!", rethrow); + throw rethrow; } LOG.info("Successfully installed snapshot!"); }
