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 <[email protected]> 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:
