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 2022/11/28 16:13:57 UTC

[iotdb] branch rel/1.0 updated: [To rel/1.0] [IOTDB-5074] Add storage group name and region id to the path of snapshot (#8231)

This is an automated email from the ASF dual-hosted git repository.

tanxinyu pushed a commit to branch rel/1.0
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/rel/1.0 by this push:
     new 352bf6a431 [To rel/1.0] [IOTDB-5074] Add storage group name and region id to the path of snapshot (#8231)
352bf6a431 is described below

commit 352bf6a431680d390fa1cce5623befc48df8d306
Author: Liu Xuxin <37...@users.noreply.github.com>
AuthorDate: Tue Nov 29 00:13:50 2022 +0800

    [To rel/1.0] [IOTDB-5074] Add storage group name and region id to the path of snapshot (#8231)
    
    * try to add storage group name and region id for snapshot taker and loader
    
    * fit ut
    
    * fix getSnapshotFile
---
 .../iotdb/db/consensus/statemachine/DataRegionStateMachine.java   | 7 ++++++-
 .../java/org/apache/iotdb/db/engine/snapshot/SnapshotLoader.java  | 8 ++++++++
 .../java/org/apache/iotdb/db/engine/snapshot/SnapshotTaker.java   | 4 ++++
 .../org/apache/iotdb/db/engine/snapshot/IoTDBSnapshotTest.java    | 8 +++++++-
 4 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/consensus/statemachine/DataRegionStateMachine.java b/server/src/main/java/org/apache/iotdb/db/consensus/statemachine/DataRegionStateMachine.java
index bf602a7d5f..b40154288e 100644
--- a/server/src/main/java/org/apache/iotdb/db/consensus/statemachine/DataRegionStateMachine.java
+++ b/server/src/main/java/org/apache/iotdb/db/consensus/statemachine/DataRegionStateMachine.java
@@ -447,7 +447,12 @@ public class DataRegionStateMachine extends BaseStateMachine {
 
   @Override
   public File getSnapshotRoot() {
-    String snapshotDir = IoTDBDescriptor.getInstance().getConfig().getRatisDataRegionSnapshotDir();
+    String snapshotDir =
+        IoTDBDescriptor.getInstance().getConfig().getRatisDataRegionSnapshotDir()
+            + File.separator
+            + region.getStorageGroupName()
+            + "-"
+            + region.getDataRegionId();
     try {
       return new File(snapshotDir).getCanonicalFile();
     } catch (IOException e) {
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/snapshot/SnapshotLoader.java b/server/src/main/java/org/apache/iotdb/db/engine/snapshot/SnapshotLoader.java
index c70fa8844e..72d9dc1384 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/snapshot/SnapshotLoader.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/snapshot/SnapshotLoader.java
@@ -326,6 +326,10 @@ public class SnapshotLoader {
               + File.separator
               + IoTDBConstant.SNAPSHOT_FOLDER_NAME
               + File.separator
+              + storageGroupName
+              + "-"
+              + dataRegionId
+              + File.separator
               + snapshotId;
       fileCnt += takeHardLinksFromSnapshotToDataDir(dataDir, new File(snapshotDir), fileInfoSet);
     }
@@ -458,6 +462,10 @@ public class SnapshotLoader {
                 + File.separator
                 + IoTDBConstant.SNAPSHOT_FOLDER_NAME
                 + File.separator
+                + storageGroupName
+                + "-"
+                + dataRegionId
+                + File.separator
                 + snapshotId;
         fileList.addAll(searchDataFilesRecursively(snapshotDir));
       }
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/snapshot/SnapshotTaker.java b/server/src/main/java/org/apache/iotdb/db/engine/snapshot/SnapshotTaker.java
index 80132d5e60..c01e5a0c25 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/snapshot/SnapshotTaker.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/snapshot/SnapshotTaker.java
@@ -226,6 +226,10 @@ public class SnapshotTaker {
     }
     stringBuilder.append(IoTDBConstant.SNAPSHOT_FOLDER_NAME);
     stringBuilder.append(File.separator);
+    stringBuilder.append(dataRegion.getStorageGroupName());
+    stringBuilder.append("-");
+    stringBuilder.append(dataRegion.getDataRegionId());
+    stringBuilder.append(File.separator);
     stringBuilder.append(snapshotId);
     stringBuilder.append(File.separator);
     // the content in here will be
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/snapshot/IoTDBSnapshotTest.java b/server/src/test/java/org/apache/iotdb/db/engine/snapshot/IoTDBSnapshotTest.java
index b13ba3777a..9db5350ada 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/snapshot/IoTDBSnapshotTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/snapshot/IoTDBSnapshotTest.java
@@ -36,6 +36,7 @@ import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 import java.io.File;
 import java.io.IOException;
@@ -205,14 +206,19 @@ public class IoTDBSnapshotTest {
                 + "0"
                 + File.separator
                 + "1-1-0-0.tsfile");
+    DataRegion region = Mockito.mock(DataRegion.class);
+    Mockito.when(region.getStorageGroupName()).thenReturn("root.test");
+    Mockito.when(region.getDataRegionId()).thenReturn("0");
     File snapshotFile =
-        new SnapshotTaker(null).getSnapshotFilePathForTsFile(tsFile, "test-snapshotId");
+        new SnapshotTaker(region).getSnapshotFilePathForTsFile(tsFile, "test-snapshotId");
     Assert.assertEquals(
         new File(
                 IoTDBDescriptor.getInstance().getConfig().getDataDirs()[0]
                     + File.separator
                     + "snapshot"
                     + File.separator
+                    + "root.test-0"
+                    + File.separator
                     + "test-snapshotId"
                     + File.separator
                     + "sequence"