[IOTDB-3862] Fix: Guarantee to add Ratis MetaFile

diff --git a/consensus/src/main/java/org/apache/iotdb/consensus/ratis/SnapshotStorage.java b/consensus/src/main/java/org/apache/iotdb/consensus/ratis/SnapshotStorage.java
index aaa7660..73d2e7a 100644
--- a/consensus/src/main/java/org/apache/iotdb/consensus/ratis/SnapshotStorage.java
+++ b/consensus/src/main/java/org/apache/iotdb/consensus/ratis/SnapshotStorage.java
@@ -36,6 +36,7 @@
 import java.nio.file.DirectoryStream;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -103,6 +104,7 @@
     return i < 0 ? null : snapshots[i].toFile();
   }
 
+  // TODO optimize: cache latest snapshot instead of query statemachine everytime
   @Override
   public SnapshotInfo getLatestSnapshot() {
     File latestSnapshotDir = findLatestSnapshotDir();
@@ -115,21 +117,18 @@
     if (actualSnapshotFiles == null) {
       return null;
     }
+    Path metaFilePath = Paths.get(getMetafilePath(latestSnapshotDir, latestSnapshotDir.getName()));
 
     List<FileInfo> fileInfos = new ArrayList<>();
-    FileInfo metafileInfo = null;
     for (Path file : actualSnapshotFiles) {
-      if (file.endsWith(".md5")) {
+      if (file.endsWith(".md5") || file.startsWith(META_FILE_PREFIX)) {
         continue;
       }
       FileInfo fileInfo = new FileInfoWithDelayedMd5Computing(file);
-      if (file.toFile().getName().startsWith(META_FILE_PREFIX)) {
-        metafileInfo = fileInfo;
-      } else {
-        fileInfos.add(fileInfo);
-      }
+      fileInfos.add(fileInfo);
     }
     // metafile should be sent last for atomicity considerations
+    FileInfo metafileInfo = new FileInfoWithDelayedMd5Computing(metaFilePath);
     fileInfos.add(metafileInfo);
 
     return new FileListSnapshotInfo(