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 2022/11/25 06:54:31 UTC
[iotdb] 01/01: correct the size of deleted tsfile in compaction
This is an automated email from the ASF dual-hosted git repository.
marklau99 pushed a commit to branch IOTDB-5004
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit eaff3cd77cb777e4be6eb9131a18c486289eee56
Author: LiuXuxin <li...@outlook.com>
AuthorDate: Fri Nov 25 14:54:09 2022 +0800
correct the size of deleted tsfile in compaction
---
.../compaction/cross/CrossSpaceCompactionTask.java | 17 ++++++++---------
.../compaction/inner/InnerSpaceCompactionTask.java | 8 +++++---
2 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/CrossSpaceCompactionTask.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/CrossSpaceCompactionTask.java
index a966c93f7f..d4aa2db32d 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/CrossSpaceCompactionTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/CrossSpaceCompactionTask.java
@@ -168,15 +168,11 @@ public class CrossSpaceCompactionTask extends AbstractCompactionTask {
releaseReadAndLockWrite(selectedSequenceFiles);
releaseReadAndLockWrite(selectedUnsequenceFiles);
- deleteOldFiles(selectedSequenceFiles);
- deleteOldFiles(selectedUnsequenceFiles);
+ long sequenceFileSize = deleteOldFiles(selectedSequenceFiles);
+ long unsequenceFileSize = deleteOldFiles(selectedUnsequenceFiles);
+ TsFileMetricManager.getInstance().deleteFile(sequenceFileSize, true);
+ TsFileMetricManager.getInstance().deleteFile(unsequenceFileSize, false);
- for (TsFileResource seqResource : selectedSequenceFiles) {
- TsFileMetricManager.getInstance().deleteFile(seqResource.getTsFileSize(), true);
- }
- for (TsFileResource unseqResource : selectedUnsequenceFiles) {
- TsFileMetricManager.getInstance().deleteFile(unseqResource.getTsFileSize(), false);
- }
for (TsFileResource targetResource : targetTsfileResourceList) {
TsFileMetricManager.getInstance().addFile(targetResource.getTsFileSize(), true);
}
@@ -299,14 +295,17 @@ public class CrossSpaceCompactionTask extends AbstractCompactionTask {
selectedUnsequenceFiles.forEach(x -> x.setStatus(TsFileResourceStatus.CLOSED));
}
- private void deleteOldFiles(List<TsFileResource> tsFileResourceList) throws IOException {
+ private long deleteOldFiles(List<TsFileResource> tsFileResourceList) throws IOException {
+ long totalSize = 0;
for (TsFileResource tsFileResource : tsFileResourceList) {
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+ totalSize += tsFileResource.getTsFileSize();
tsFileResource.remove();
LOGGER.info(
"[CrossSpaceCompaction] Delete TsFile :{}.",
tsFileResource.getTsFile().getAbsolutePath());
}
+ return totalSize;
}
private void releaseReadAndLockWrite(List<TsFileResource> tsFileResourceList) {
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/InnerSpaceCompactionTask.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/InnerSpaceCompactionTask.java
index 13e68bdea8..a3c911cf13 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/InnerSpaceCompactionTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/InnerSpaceCompactionTask.java
@@ -203,13 +203,15 @@ public class InnerSpaceCompactionTask extends AbstractCompactionTask {
storageGroupName,
dataRegionId);
// delete the old files
+ long totalSizeOfDeletedFile = 0L;
+ for (TsFileResource resource : selectedTsFileResourceList) {
+ totalSizeOfDeletedFile += resource.getTsFileSize();
+ }
CompactionUtils.deleteTsFilesInDisk(
selectedTsFileResourceList, storageGroupName + "-" + dataRegionId);
CompactionUtils.deleteModificationForSourceFile(
selectedTsFileResourceList, storageGroupName + "-" + dataRegionId);
- for (TsFileResource resource : selectedTsFileResourceList) {
- TsFileMetricManager.getInstance().deleteFile(resource.getTsFile().length(), sequence);
- }
+ TsFileMetricManager.getInstance().deleteFile(totalSizeOfDeletedFile, sequence);
// inner space compaction task has only one target file
if (targetTsFileList.size() > 0) {
// if the target tsfile is empty file, it will be removed