You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by he...@apache.org on 2023/05/24 09:04:11 UTC

[iotdb] 01/02: disable compaction on the remote

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

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

commit fd6d0953e5a338b7df1a41c3d86de26a304cb5d3
Author: HeimingZ <zh...@qq.com>
AuthorDate: Wed May 24 16:42:25 2023 +0800

    disable compaction on the remote
---
 .../main/java/org/apache/iotdb/db/conf/directories/TierManager.java   | 3 +++
 .../engine/compaction/selector/impl/SizeTieredCompactionSelector.java | 4 +++-
 .../compaction/selector/utils/CrossSpaceCompactionCandidate.java      | 2 ++
 .../java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java  | 4 ++++
 4 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/conf/directories/TierManager.java b/server/src/main/java/org/apache/iotdb/db/conf/directories/TierManager.java
index 734d7a5decf..81281a46ca0 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/directories/TierManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/directories/TierManager.java
@@ -101,6 +101,9 @@ public class TierManager {
     for (int i = 0; i < tierDirs.length; ++i) {
       for (int j = 0; j < tierDirs[i].length; ++j) {
         if (tierDirs[i][j].equals(OBJECT_STORAGE_DIR)) {
+          if (i != tierDirs.length - 1) {
+            logger.error("Object Storage can only exist on the last tier.");
+          }
           tierDirs[i][j] =
               FSUtils.getOSDefaultPath(config.getObjectStorageBucket(), config.getDataNodeId());
         } else if (FSUtils.isLocal(tierDirs[i][j])) {
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/impl/SizeTieredCompactionSelector.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/impl/SizeTieredCompactionSelector.java
index 105e03637c4..c3dddf47402 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/impl/SizeTieredCompactionSelector.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/impl/SizeTieredCompactionSelector.java
@@ -114,7 +114,9 @@ public class SizeTieredCompactionSelector
         selectedFileSize = 0L;
         continue;
       }
-      if (currentFile.getStatus() != TsFileResourceStatus.NORMAL || currentFile.isMigrating()) {
+      if (currentFile.getStatus() != TsFileResourceStatus.NORMAL
+          || currentFile.onRemote()
+          || currentFile.isMigrating()) {
         selectedFileList.clear();
         selectedFileSize = 0L;
         continue;
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/utils/CrossSpaceCompactionCandidate.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/utils/CrossSpaceCompactionCandidate.java
index 42a91acc792..b70cf0f0b0b 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/utils/CrossSpaceCompactionCandidate.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/selector/utils/CrossSpaceCompactionCandidate.java
@@ -143,6 +143,7 @@ public class CrossSpaceCompactionCandidate {
     List<TsFileResourceCandidate> ret = new ArrayList<>();
     for (TsFileResource resource : unseqResources) {
       if (resource.getStatus() != TsFileResourceStatus.NORMAL
+          || resource.onRemote()
           || resource.isMigrating()
           || !resource.getTsFile().exists()) {
         break;
@@ -201,6 +202,7 @@ public class CrossSpaceCompactionCandidate {
       // the status of file may be changed after the task is submitted to queue
       this.isValidCandidate =
           tsFileResource.getStatus() == TsFileResourceStatus.NORMAL
+              && !tsFileResource.onRemote()
               && !tsFileResource.isMigrating()
               && tsFileResource.getTsFile().exists();
     }
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
index fe1b9c102d8..859d6b201ff 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
@@ -658,6 +658,10 @@ public class TsFileResource {
     this.isMigrating = isMigrating;
   }
 
+  public boolean onRemote() {
+    return !file.exists();
+  }
+
   public void setStatus(TsFileResourceStatus status) {
     switch (status) {
       case NORMAL: