You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2021/08/30 03:27:03 UTC

[iotdb] branch rel/0.12 updated: [To rel/0.12] Fix redundant data in compaction recover (#3861)

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

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


The following commit(s) were added to refs/heads/rel/0.12 by this push:
     new 5453093  [To rel/0.12] Fix redundant data in compaction recover (#3861)
5453093 is described below

commit 5453093db40caaf06400a0a397697cb14758ed38
Author: liuxuxin <37...@users.noreply.github.com>
AuthorDate: Mon Aug 30 11:26:34 2021 +0800

    [To rel/0.12] Fix redundant data in compaction recover (#3861)
---
 .../engine/compaction/level/LevelCompactionTsFileManagement.java  | 2 ++
 .../iotdb/tsfile/write/writer/RestorableTsFileIOWriter.java       | 8 ++++++++
 2 files changed, 10 insertions(+)

diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/level/LevelCompactionTsFileManagement.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/level/LevelCompactionTsFileManagement.java
index 6725b17..5a97ab5 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/level/LevelCompactionTsFileManagement.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/level/LevelCompactionTsFileManagement.java
@@ -461,6 +461,7 @@ public class LevelCompactionTsFileManagement extends TsFileManagement {
           if (writer.hasCrashed()) {
             if (offset > 0) {
               writer.getIOWriterOut().truncate(offset);
+              writer.dropLastChunkGroupMetadata();
             }
             CompactionLogger compactionLogger =
                 new CompactionLogger(storageGroupDir, storageGroupName);
@@ -507,6 +508,7 @@ public class LevelCompactionTsFileManagement extends TsFileManagement {
           if (writer.hasCrashed()) {
             if (offset > 0) {
               writer.getIOWriterOut().truncate(offset);
+              writer.dropLastChunkGroupMetadata();
             }
             CompactionLogger compactionLogger =
                 new CompactionLogger(storageGroupDir, storageGroupName);
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/RestorableTsFileIOWriter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/RestorableTsFileIOWriter.java
index 9f14127..8ee5283 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/RestorableTsFileIOWriter.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/RestorableTsFileIOWriter.java
@@ -282,4 +282,12 @@ public class RestorableTsFileIOWriter extends TsFileIOWriter {
   public long getMaxPlanIndex() {
     return maxPlanIndex;
   }
+
+  public boolean dropLastChunkGroupMetadata() {
+    if (chunkGroupMetadataList.size() < 1) {
+      return false;
+    }
+    chunkGroupMetadataList.remove(chunkGroupMetadataList.size() - 1);
+    return true;
+  }
 }