This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch dev/1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/dev/1.3 by this push:
new 64b43e79201 fix bug (#14247)
64b43e79201 is described below
commit 64b43e79201eaf8c8be97eb0d82e7cb90c35215e
Author: shuwenwei <[email protected]>
AuthorDate: Mon Dec 2 15:59:42 2024 +0800
fix bug (#14247)
---
.../db/storageengine/dataregion/DataRegion.java | 3 --
.../dataregion/tsfile/TsFileManager.java | 11 +++++++-
.../cross/InsertionCrossSpaceCompactionTest.java | 32 ++++++++++++++++++++++
3 files changed, 42 insertions(+), 4 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
index 4721d27eff7..213f25cf000 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
@@ -3053,9 +3053,6 @@ public class DataRegion implements IDataRegionForQuery {
PipeInsertionDataNodeListener.getInstance()
.listenToTsFile(dataRegionId, tsFileResource, true, isGeneratedByPipe);
- // help tsfile resource degrade
- tsFileResourceManager.registerSealedTsFileResource(tsFileResource);
-
tsFileManager.add(tsFileResource, false);
return true;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileManager.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileManager.java
index 919848ee540..734c1449dfa 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileManager.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileManager.java
@@ -171,7 +171,6 @@ public class TsFileManager {
try {
for (TsFileResource resource : tsFileResourceList) {
remove(resource, sequence);
- TsFileResourceManager.getInstance().removeTsFileResource(resource);
}
} finally {
writeLock("removeAll");
@@ -184,6 +183,7 @@ public class TsFileManager {
*/
public void insertToPartitionFileList(
TsFileResource tsFileResource, long timePartition, boolean sequence, int
insertPos) {
+ registerTsFileResourceToResourceManager(tsFileResource);
writeLock("add");
try {
Map<Long, TsFileResourceList> selectedMap = sequence ? sequenceFiles :
unsequenceFiles;
@@ -196,6 +196,7 @@ public class TsFileManager {
}
public void add(TsFileResource tsFileResource, boolean sequence) {
+ registerTsFileResourceToResourceManager(tsFileResource);
writeLock("add");
try {
Map<Long, TsFileResourceList> selectedMap = sequence ? sequenceFiles :
unsequenceFiles;
@@ -208,6 +209,7 @@ public class TsFileManager {
}
public void keepOrderInsert(TsFileResource tsFileResource, boolean sequence)
throws IOException {
+ registerTsFileResourceToResourceManager(tsFileResource);
writeLock("keepOrderInsert");
try {
Map<Long, TsFileResourceList> selectedMap = sequence ? sequenceFiles :
unsequenceFiles;
@@ -230,6 +232,13 @@ public class TsFileManager {
}
}
+ private void registerTsFileResourceToResourceManager(TsFileResource
resource) {
+ TsFileResourceStatus status = resource.getStatus();
+ if (status != TsFileResourceStatus.UNCLOSED && status !=
TsFileResourceStatus.DELETED) {
+
TsFileResourceManager.getInstance().registerSealedTsFileResource(resource);
+ }
+ }
+
/** This method is called after compaction to update memory. */
public void replace(
List<TsFileResource> seqFileResources,
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionTest.java
index 0193c616f1a..ddcb90f3ac8 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionTest.java
@@ -72,6 +72,7 @@ public class InsertionCrossSpaceCompactionTest extends
AbstractCompactionTest {
enableInsertionCrossSpaceCompaction =
IoTDBDescriptor.getInstance().getConfig().isEnableCrossSpaceCompaction();
IoTDBDescriptor.getInstance().getConfig().setEnableCrossSpaceCompaction(true);
+ TsFileResourceManager.getInstance().clear();
}
@After
@@ -80,6 +81,7 @@ public class InsertionCrossSpaceCompactionTest extends
AbstractCompactionTest {
.getConfig()
.setEnableCrossSpaceCompaction(enableInsertionCrossSpaceCompaction);
super.tearDown();
+ TsFileResourceManager.getInstance().clear();
}
@Test
@@ -127,6 +129,9 @@ public class InsertionCrossSpaceCompactionTest extends
AbstractCompactionTest {
long timestamp =
TsFileNameGenerator.getTsFileName(targetFile.getTsFile().getName()).getTime();
Assert.assertEquals(2, timestamp);
Assert.assertTrue(tsFileManager.getTsFileList(false).isEmpty());
+ Assert.assertEquals(
+ tsFileManager.size(true) + tsFileManager.size(false),
+ TsFileResourceManager.getInstance().getPriorityQueueSize());
}
@Test
@@ -168,6 +173,9 @@ public class InsertionCrossSpaceCompactionTest extends
AbstractCompactionTest {
TsFileResource targetFile = tsFileManager.getTsFileList(true).get(1);
long timestamp =
TsFileNameGenerator.getTsFileName(targetFile.getTsFile().getName()).getTime();
Assert.assertEquals(2, timestamp);
+ Assert.assertEquals(
+ tsFileManager.size(true) + tsFileManager.size(false),
+ TsFileResourceManager.getInstance().getPriorityQueueSize());
}
@Test
@@ -209,6 +217,9 @@ public class InsertionCrossSpaceCompactionTest extends
AbstractCompactionTest {
TsFileResource targetFile = tsFileManager.getTsFileList(true).get(0);
long timestamp =
TsFileNameGenerator.getTsFileName(targetFile.getTsFile().getName()).getTime();
Assert.assertEquals(0, timestamp);
+ Assert.assertEquals(
+ tsFileManager.size(true) + tsFileManager.size(false),
+ TsFileResourceManager.getInstance().getPriorityQueueSize());
}
@Test
@@ -256,6 +267,9 @@ public class InsertionCrossSpaceCompactionTest extends
AbstractCompactionTest {
long timestamp =
TsFileNameGenerator.getTsFileName(targetFile.getTsFile().getName()).getTime();
Assert.assertEquals(4, timestamp);
Assert.assertTrue(tsFileManager.getTsFileList(false).isEmpty());
+ Assert.assertEquals(
+ tsFileManager.size(true) + tsFileManager.size(false),
+ TsFileResourceManager.getInstance().getPriorityQueueSize());
}
@Test
@@ -291,6 +305,9 @@ public class InsertionCrossSpaceCompactionTest extends
AbstractCompactionTest {
TsFileResource targetFile = tsFileManager.getTsFileList(true).get(0);
long timestamp =
TsFileNameGenerator.getTsFileName(targetFile.getTsFile().getName()).getTime();
Assert.assertEquals(2, timestamp);
+ Assert.assertEquals(
+ tsFileManager.size(true) + tsFileManager.size(false),
+ TsFileResourceManager.getInstance().getPriorityQueueSize());
}
@Test
@@ -340,6 +357,9 @@ public class InsertionCrossSpaceCompactionTest extends
AbstractCompactionTest {
TsFileResource targetFile2 = tsFileManager.getTsFileList(true).get(2);
timestamp =
TsFileNameGenerator.getTsFileName(targetFile2.getTsFile().getName()).getTime();
Assert.assertEquals(6, timestamp);
+ Assert.assertEquals(
+ tsFileManager.size(true) + tsFileManager.size(false),
+ TsFileResourceManager.getInstance().getPriorityQueueSize());
}
@Test
@@ -378,6 +398,9 @@ public class InsertionCrossSpaceCompactionTest extends
AbstractCompactionTest {
TsFileResource targetFile3 = tsFileManager.getTsFileList(true).get(2);
timestamp =
TsFileNameGenerator.getTsFileName(targetFile3.getTsFile().getName()).getTime();
Assert.assertEquals(4, timestamp);
+ Assert.assertEquals(
+ tsFileManager.size(true) + tsFileManager.size(false),
+ TsFileResourceManager.getInstance().getPriorityQueueSize());
}
@Test
@@ -423,6 +446,9 @@ public class InsertionCrossSpaceCompactionTest extends
AbstractCompactionTest {
TsFileResource targetFile2 = tsFileManager.getTsFileList(true).get(1);
timestamp =
TsFileNameGenerator.getTsFileName(targetFile2.getTsFile().getName()).getTime();
Assert.assertEquals(2, timestamp);
+ Assert.assertEquals(
+ tsFileManager.size(true) + tsFileManager.size(false),
+ TsFileResourceManager.getInstance().getPriorityQueueSize());
}
@Test
@@ -473,6 +499,9 @@ public class InsertionCrossSpaceCompactionTest extends
AbstractCompactionTest {
TsFileResource targetFile3 =
tsFileManager.getOrCreateSequenceListByTimePartition(2808).get(0);
timestamp =
TsFileNameGenerator.getTsFileName(targetFile3.getTsFile().getName()).getTime();
Assert.assertEquals(4, timestamp);
+ Assert.assertEquals(
+ tsFileManager.size(true) + tsFileManager.size(false),
+ TsFileResourceManager.getInstance().getPriorityQueueSize());
}
@Test
@@ -526,6 +555,9 @@ public class InsertionCrossSpaceCompactionTest extends
AbstractCompactionTest {
Assert.assertEquals(seqFileNumBeforeCompaction,
FileMetrics.getInstance().getFileCount(true));
Assert.assertEquals(
unseqFileNumBeforeCompaction,
FileMetrics.getInstance().getFileCount(false));
+ Assert.assertEquals(
+ tsFileManager.size(true) + tsFileManager.size(false),
+ TsFileResourceManager.getInstance().getPriorityQueueSize());
}
public TsFileResource generateSingleNonAlignedSeriesFileWithDevices(