You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ma...@apache.org on 2023/01/10 07:52:07 UTC

[iotdb] branch master updated: [IOTDB-5288][IOTDB-5163] Fix the file metrics is wrong (#8805)

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

marklau99 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 8e40479c42 [IOTDB-5288][IOTDB-5163] Fix the file metrics is wrong (#8805)
8e40479c42 is described below

commit 8e40479c42d8f460907a40e335a0d91994f2bcd6
Author: Liu Xuxin <37...@users.noreply.github.com>
AuthorDate: Tue Jan 10 15:52:01 2023 +0800

    [IOTDB-5288][IOTDB-5163] Fix the file metrics is wrong (#8805)
---
 .../execute/task/CrossSpaceCompactionTask.java     | 27 ++++++++++----------
 .../execute/task/InnerSpaceCompactionTask.java     | 29 +++++++++++-----------
 2 files changed, 29 insertions(+), 27 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/task/CrossSpaceCompactionTask.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/task/CrossSpaceCompactionTask.java
index cf9db3622c..21401ef335 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/task/CrossSpaceCompactionTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/task/CrossSpaceCompactionTask.java
@@ -184,19 +184,6 @@ public class CrossSpaceCompactionTask extends AbstractCompactionTask {
 
         long sequenceFileSize = deleteOldFiles(selectedSequenceFiles);
         long unsequenceFileSize = deleteOldFiles(selectedUnsequenceFiles);
-        TsFileMetricManager.getInstance()
-            .deleteFile(sequenceFileSize, true, selectedSequenceFiles.size());
-        TsFileMetricManager.getInstance()
-            .deleteFile(unsequenceFileSize, false, selectedUnsequenceFiles.size());
-
-        for (TsFileResource targetResource : targetTsfileResourceList) {
-          if (targetResource != null) {
-            TsFileMetricManager.getInstance().addFile(targetResource.getTsFileSize(), true);
-
-            // set target resources to CLOSED, so that they can be selected to compact
-            targetResource.setStatus(TsFileResourceStatus.CLOSED);
-          }
-        }
 
         CompactionUtils.deleteCompactionModsFile(selectedSequenceFiles, selectedUnsequenceFiles);
 
@@ -216,6 +203,20 @@ public class CrossSpaceCompactionTask extends AbstractCompactionTask {
               subTaskSummary.PAGE_OVERLAP_OR_MODIFIED,
               subTaskSummary.PAGE_FAKE_OVERLAP);
         }
+
+        // update the metrics finally in case of any exception occurs
+        for (TsFileResource targetResource : targetTsfileResourceList) {
+          if (targetResource != null) {
+            TsFileMetricManager.getInstance().addFile(targetResource.getTsFileSize(), true);
+
+            // set target resources to CLOSED, so that they can be selected to compact
+            targetResource.setStatus(TsFileResourceStatus.CLOSED);
+          }
+        }
+        TsFileMetricManager.getInstance()
+            .deleteFile(sequenceFileSize, true, selectedSequenceFiles.size());
+        TsFileMetricManager.getInstance()
+            .deleteFile(unsequenceFileSize, false, selectedUnsequenceFiles.size());
         long costTime = (System.currentTimeMillis() - startTime) / 1000;
         LOGGER.info(
             "{}-{} [Compaction] CrossSpaceCompaction task finishes successfully, time cost is {} s, compaction speed is {} MB/s",
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/task/InnerSpaceCompactionTask.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/task/InnerSpaceCompactionTask.java
index fccd39b781..b8406abc00 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/task/InnerSpaceCompactionTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/task/InnerSpaceCompactionTask.java
@@ -223,16 +223,6 @@ public class InnerSpaceCompactionTask extends AbstractCompactionTask {
           selectedTsFileResourceList, storageGroupName + "-" + dataRegionId);
       CompactionUtils.deleteModificationForSourceFile(
           selectedTsFileResourceList, storageGroupName + "-" + dataRegionId);
-      TsFileMetricManager.getInstance()
-          .deleteFile(totalSizeOfDeletedFile, sequence, selectedTsFileResourceList.size());
-      // inner space compaction task has only one target file
-      if (targetTsFileList.get(0) != null) {
-        TsFileMetricManager.getInstance()
-            .addFile(targetTsFileList.get(0).getTsFile().length(), sequence);
-
-        // set target resources to CLOSED, so that they can be selected to compact
-        targetTsFileList.get(0).setStatus(TsFileResourceStatus.CLOSED);
-      }
 
       if (performer instanceof FastCompactionPerformer) {
         SubCompactionTaskSummary subTaskSummary =
@@ -248,6 +238,21 @@ public class InnerSpaceCompactionTask extends AbstractCompactionTask {
             subTaskSummary.PAGE_FAKE_OVERLAP);
       }
 
+      if (logFile.exists()) {
+        FileUtils.delete(logFile);
+      }
+
+      // inner space compaction task has only one target file
+      if (targetTsFileList.get(0) != null) {
+        TsFileMetricManager.getInstance()
+            .addFile(targetTsFileList.get(0).getTsFile().length(), sequence);
+
+        // set target resources to CLOSED, so that they can be selected to compact
+        targetTsFileList.get(0).setStatus(TsFileResourceStatus.CLOSED);
+      }
+      TsFileMetricManager.getInstance()
+          .deleteFile(totalSizeOfDeletedFile, sequence, selectedTsFileResourceList.size());
+
       double costTime = (System.currentTimeMillis() - startTime) / 1000.0d;
       LOGGER.info(
           "{}-{} [Compaction] InnerSpaceCompaction task finishes successfully, target file is {},"
@@ -257,10 +262,6 @@ public class InnerSpaceCompactionTask extends AbstractCompactionTask {
           targetTsFileResource.getTsFile().getName(),
           costTime,
           selectedFileSize / 1024.0d / 1024.0d / costTime);
-
-      if (logFile.exists()) {
-        FileUtils.delete(logFile);
-      }
     } catch (Throwable throwable) {
       // catch throwable to handle OOM errors
       if (!(throwable instanceof InterruptedException)) {