You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by xi...@apache.org on 2023/03/23 03:23:03 UTC
[iotdb] branch master updated: remove aligned time series id in nonAligned measurement iterator (#9410)
This is an automated email from the ASF dual-hosted git repository.
xingtanzjr 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 09c7fa77c4 remove aligned time series id in nonAligned measurement iterator (#9410)
09c7fa77c4 is described below
commit 09c7fa77c461a3c9825b92354cd666733ba3aaa3
Author: 周沛辰 <45...@users.noreply.github.com>
AuthorDate: Thu Mar 23 11:22:57 2023 +0800
remove aligned time series id in nonAligned measurement iterator (#9410)
---
.../impl/ReadChunkCompactionPerformer.java | 7 +-
.../execute/utils/MultiTsFileDeviceIterator.java | 7 +
.../utils/MultiTsFileDeviceIteratorTest.java | 257 +++++++++++++++++----
3 files changed, 220 insertions(+), 51 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/performer/impl/ReadChunkCompactionPerformer.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/performer/impl/ReadChunkCompactionPerformer.java
index 58d2a9e25e..e97f2e5fe3 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/performer/impl/ReadChunkCompactionPerformer.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/performer/impl/ReadChunkCompactionPerformer.java
@@ -170,13 +170,8 @@ public class ReadChunkCompactionPerformer implements ISeqCompactionPerformer {
deviceIterator.iterateNotAlignedSeries(device, true);
while (seriesIterator.hasNextSeries()) {
checkThreadInterrupted();
- String seriesID = seriesIterator.nextSeries();
- if (seriesID.equals("")) {
- // encounter a deleted aligned device, return
- return;
- }
// TODO: we can provide a configuration item to enable concurrent between each series
- PartialPath p = new PartialPath(device, seriesID);
+ PartialPath p = new PartialPath(device, seriesIterator.nextSeries());
// TODO: seriesIterator needs to be refactor.
// This statement must be called before next hasNextSeries() called, or it may be trapped in a
// dead-loop.
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/utils/MultiTsFileDeviceIterator.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/utils/MultiTsFileDeviceIterator.java
index c10a2bb9f4..7572e797e1 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/utils/MultiTsFileDeviceIterator.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/utils/MultiTsFileDeviceIterator.java
@@ -377,6 +377,9 @@ public class MultiTsFileDeviceIterator implements AutoCloseable {
}
}
+ /*
+ NonAligned measurement iterator.
+ */
public class MeasurementIterator {
private Map<TsFileResource, TsFileSequenceReader> readerMap;
private String device;
@@ -429,6 +432,10 @@ public class MultiTsFileDeviceIterator implements AutoCloseable {
if (chunkMetadataListMap.size() == 0) {
if (chunkMetadataIteratorMap.get(resource).hasNext()) {
chunkMetadataListMap = chunkMetadataIteratorMap.get(resource).next();
+ if (chunkMetadataListMap.containsKey("")) {
+ // encounter deleted aligned series, then remove it
+ chunkMetadataListMap.remove("");
+ }
chunkMetadataCacheMap.put(reader, chunkMetadataListMap);
} else {
continue;
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/utils/MultiTsFileDeviceIteratorTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/utils/MultiTsFileDeviceIteratorTest.java
index 5e4c60e4ed..a6d1612889 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/utils/MultiTsFileDeviceIteratorTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/utils/MultiTsFileDeviceIteratorTest.java
@@ -349,6 +349,29 @@ public class MultiTsFileDeviceIteratorTest extends AbstractCompactionTest {
createFiles(2, 10, 15, 100, 2000, 2000, 50, 50, true, true);
tsFileManager.addAll(seqResources, true);
+ // sort the deviceId in lexicographical order from small to large
+ List<String> deviceIds = new ArrayList<>();
+ for (int i = 0; i < 30; i++) {
+ deviceIds.add("root.testsg.d" + (i + TsFileGeneratorUtils.getAlignDeviceOffset()));
+ }
+ deviceIds.sort(String::compareTo);
+
+ int deviceNum = 0;
+ try (MultiTsFileDeviceIterator multiTsFileDeviceIterator =
+ new MultiTsFileDeviceIterator(tsFileManager.getTsFileList(true))) {
+ while (multiTsFileDeviceIterator.hasNextDevice()) {
+ Pair<String, Boolean> deviceInfo = multiTsFileDeviceIterator.nextDevice();
+ Assert.assertEquals(deviceIds.get(deviceNum), deviceInfo.left);
+ if (Integer.parseInt(deviceInfo.left.substring(13)) < 10) {
+ Assert.assertTrue(deviceInfo.right);
+ } else {
+ Assert.assertFalse(deviceInfo.right);
+ }
+ deviceNum++;
+ }
+ }
+ Assert.assertEquals(30, deviceNum);
+
List<PartialPath> timeseriesPaths = new ArrayList<>();
for (int i = 0; i < 30; i++) {
for (int j = 0; j < 15; j++) {
@@ -399,16 +422,18 @@ public class MultiTsFileDeviceIteratorTest extends AbstractCompactionTest {
createFiles(1, 10, 5, 100, 2000, 2000, 50, 50, false, true);
tsFileManager.add(seqResources.get(seqResources.size() - 1), true);
- sourceData = readSourceFiles(timeseriesPaths, Collections.emptyList());
-
- // sort the deviceId in lexicographical order from small to large
- List<String> deviceIds = new ArrayList<>();
+ timeseriesPaths.clear();
for (int i = 0; i < 30; i++) {
- deviceIds.add("root.testsg.d" + (i + TsFileGeneratorUtils.getAlignDeviceOffset()));
+ for (int j = 0; j < 15; j++) {
+ timeseriesPaths.add(
+ new MeasurementPath(
+ COMPACTION_TEST_SG + PATH_SEPARATOR + "d" + i + PATH_SEPARATOR + "s" + j,
+ TSDataType.INT64));
+ }
}
- deviceIds.sort(String::compareTo);
+ sourceData = readSourceFiles(timeseriesPaths, Collections.emptyList());
- int deviceNum = 0;
+ deviceNum = 0;
try (MultiTsFileDeviceIterator multiTsFileDeviceIterator =
new MultiTsFileDeviceIterator(tsFileManager.getTsFileList(true))) {
while (multiTsFileDeviceIterator.hasNextDevice()) {
@@ -453,7 +478,7 @@ public class MultiTsFileDeviceIteratorTest extends AbstractCompactionTest {
createFiles(3, 10, 5, 100, 0, 0, 50, 50, true, true);
createFiles(4, 30, 5, 100, 1000, 0, 50, 50, true, true);
- // generate mods file, delete d0 ~ d9 with nonAligned property
+ // generate mods file, delete d0 ~ d9 with aligned property
List<String> seriesPaths = new ArrayList<>();
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 5; j++) {
@@ -464,14 +489,37 @@ public class MultiTsFileDeviceIteratorTest extends AbstractCompactionTest {
generateModsFile(seriesPaths, unseqResources, Long.MIN_VALUE, Long.MAX_VALUE);
deleteTimeseriesInMManager(seriesPaths);
- // generate d0 ~ d9 with aligned property
+ // generate d0 ~ d9 with nonAligned property
createFiles(2, 10, 15, 100, 2000, 2000, 50, 50, false, true);
tsFileManager.addAll(seqResources, true);
+ // sort the deviceId in lexicographical order from small to large
+ List<String> deviceIds = new ArrayList<>();
+ for (int i = 0; i < 30; i++) {
+ deviceIds.add("root.testsg.d" + (i + TsFileGeneratorUtils.getAlignDeviceOffset()));
+ }
+ deviceIds.sort(String::compareTo);
+
+ int deviceNum = 0;
+ try (MultiTsFileDeviceIterator multiTsFileDeviceIterator =
+ new MultiTsFileDeviceIterator(tsFileManager.getTsFileList(true))) {
+ while (multiTsFileDeviceIterator.hasNextDevice()) {
+ Pair<String, Boolean> deviceInfo = multiTsFileDeviceIterator.nextDevice();
+ Assert.assertEquals(deviceIds.get(deviceNum), deviceInfo.left);
+ if (Integer.parseInt(deviceInfo.left.substring(13)) < 10) {
+ Assert.assertFalse(deviceInfo.right);
+ } else {
+ Assert.assertTrue(deviceInfo.right);
+ }
+ deviceNum++;
+ }
+ }
+ Assert.assertEquals(30, deviceNum);
+
List<PartialPath> timeseriesPaths = new ArrayList<>();
for (int i = 0; i < 30; i++) {
for (int j = 0; j < 15; j++) {
- if (i < 10) {
+ if (i >= 10) {
timeseriesPaths.add(
new AlignedPath(
COMPACTION_TEST_SG + PATH_SEPARATOR + "d" + i,
@@ -502,7 +550,7 @@ public class MultiTsFileDeviceIteratorTest extends AbstractCompactionTest {
validateSeqFiles(true);
validateTargetDatas(sourceData, Collections.emptyList());
- // generate mods file, delete d0 ~ d9 with aligned property
+ // generate mods file, delete d0 ~ d9 with nonAligned property
seriesPaths.clear();
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 15; j++) {
@@ -514,20 +562,23 @@ public class MultiTsFileDeviceIteratorTest extends AbstractCompactionTest {
deleteTimeseriesInMManager(seriesPaths);
- // generate mods file, delete d0 ~ d9 with nonAligned property
+ // generate mods file, delete d0 ~ d9 with aligned property
createFiles(1, 10, 5, 100, 2000, 2000, 50, 50, true, true);
tsFileManager.add(seqResources.get(seqResources.size() - 1), true);
- sourceData = readSourceFiles(timeseriesPaths, Collections.emptyList());
-
- // sort the deviceId in lexicographical order from small to large
- List<String> deviceIds = new ArrayList<>();
+ timeseriesPaths.clear();
for (int i = 0; i < 30; i++) {
- deviceIds.add("root.testsg.d" + (i + TsFileGeneratorUtils.getAlignDeviceOffset()));
+ for (int j = 0; j < 15; j++) {
+ timeseriesPaths.add(
+ new AlignedPath(
+ COMPACTION_TEST_SG + PATH_SEPARATOR + "d" + i,
+ Collections.singletonList("s" + j),
+ Collections.singletonList(new MeasurementSchema("s" + j, TSDataType.INT64))));
+ }
}
- deviceIds.sort(String::compareTo);
+ sourceData = readSourceFiles(timeseriesPaths, Collections.emptyList());
- int deviceNum = 0;
+ deviceNum = 0;
try (MultiTsFileDeviceIterator multiTsFileDeviceIterator =
new MultiTsFileDeviceIterator(tsFileManager.getTsFileList(true))) {
while (multiTsFileDeviceIterator.hasNextDevice()) {
@@ -585,6 +636,29 @@ public class MultiTsFileDeviceIteratorTest extends AbstractCompactionTest {
createFiles(2, 10, 15, 100, 2000, 2000, 50, 50, true, true);
tsFileManager.addAll(seqResources, true);
+ // sort the deviceId in lexicographical order from small to large
+ List<String> deviceIds = new ArrayList<>();
+ for (int i = 0; i < 30; i++) {
+ deviceIds.add("root.testsg.d" + (i + TsFileGeneratorUtils.getAlignDeviceOffset()));
+ }
+ deviceIds.sort(String::compareTo);
+
+ int deviceNum = 0;
+ try (MultiTsFileDeviceIterator multiTsFileDeviceIterator =
+ new MultiTsFileDeviceIterator(tsFileManager.getTsFileList(true))) {
+ while (multiTsFileDeviceIterator.hasNextDevice()) {
+ Pair<String, Boolean> deviceInfo = multiTsFileDeviceIterator.nextDevice();
+ Assert.assertEquals(deviceIds.get(deviceNum), deviceInfo.left);
+ if (Integer.parseInt(deviceInfo.left.substring(13)) < 10) {
+ Assert.assertTrue(deviceInfo.right);
+ } else {
+ Assert.assertFalse(deviceInfo.right);
+ }
+ deviceNum++;
+ }
+ }
+ Assert.assertEquals(30, deviceNum);
+
List<PartialPath> timeseriesPaths = new ArrayList<>();
for (int i = 0; i < 30; i++) {
for (int j = 0; j < 15; j++) {
@@ -635,16 +709,18 @@ public class MultiTsFileDeviceIteratorTest extends AbstractCompactionTest {
createFiles(1, 10, 5, 100, 2000, 2000, 50, 50, false, true);
tsFileManager.add(seqResources.get(seqResources.size() - 1), true);
- sourceData = readSourceFiles(timeseriesPaths, Collections.emptyList());
-
- // sort the deviceId in lexicographical order from small to large
- List<String> deviceIds = new ArrayList<>();
+ timeseriesPaths.clear();
for (int i = 0; i < 30; i++) {
- deviceIds.add("root.testsg.d" + (i + TsFileGeneratorUtils.getAlignDeviceOffset()));
+ for (int j = 0; j < 15; j++) {
+ timeseriesPaths.add(
+ new MeasurementPath(
+ COMPACTION_TEST_SG + PATH_SEPARATOR + "d" + i + PATH_SEPARATOR + "s" + j,
+ TSDataType.INT64));
+ }
}
- deviceIds.sort(String::compareTo);
+ sourceData = readSourceFiles(timeseriesPaths, Collections.emptyList());
- int deviceNum = 0;
+ deviceNum = 0;
try (MultiTsFileDeviceIterator multiTsFileDeviceIterator =
new MultiTsFileDeviceIterator(tsFileManager.getTsFileList(true))) {
while (multiTsFileDeviceIterator.hasNextDevice()) {
@@ -688,7 +764,7 @@ public class MultiTsFileDeviceIteratorTest extends AbstractCompactionTest {
createFiles(3, 10, 5, 100, 0, 0, 50, 50, true, true);
createFiles(4, 30, 5, 100, 1000, 0, 50, 50, true, true);
- // generate mods file, delete d0 ~ d9 with nonAligned property
+ // generate mods file, delete d0 ~ d9 with aligned property
List<String> seriesPaths = new ArrayList<>();
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 5; j++) {
@@ -699,10 +775,33 @@ public class MultiTsFileDeviceIteratorTest extends AbstractCompactionTest {
generateModsFile(seriesPaths, unseqResources, Long.MIN_VALUE, Long.MAX_VALUE);
deleteTimeseriesInMManager(seriesPaths);
- // generate d0 ~ d9 with aligned property
+ // generate d0 ~ d9 with nonAligned property
createFiles(2, 10, 15, 100, 2000, 2000, 50, 50, false, true);
tsFileManager.addAll(seqResources, true);
+ // sort the deviceId in lexicographical order from small to large
+ List<String> deviceIds = new ArrayList<>();
+ for (int i = 0; i < 30; i++) {
+ deviceIds.add("root.testsg.d" + (i + TsFileGeneratorUtils.getAlignDeviceOffset()));
+ }
+ deviceIds.sort(String::compareTo);
+
+ int deviceNum = 0;
+ try (MultiTsFileDeviceIterator multiTsFileDeviceIterator =
+ new MultiTsFileDeviceIterator(tsFileManager.getTsFileList(true))) {
+ while (multiTsFileDeviceIterator.hasNextDevice()) {
+ Pair<String, Boolean> deviceInfo = multiTsFileDeviceIterator.nextDevice();
+ Assert.assertEquals(deviceIds.get(deviceNum), deviceInfo.left);
+ if (Integer.parseInt(deviceInfo.left.substring(13)) < 10) {
+ Assert.assertFalse(deviceInfo.right);
+ } else {
+ Assert.assertTrue(deviceInfo.right);
+ }
+ deviceNum++;
+ }
+ }
+ Assert.assertEquals(30, deviceNum);
+
List<PartialPath> timeseriesPaths = new ArrayList<>();
for (int i = 0; i < 30; i++) {
for (int j = 0; j < 15; j++) {
@@ -737,7 +836,7 @@ public class MultiTsFileDeviceIteratorTest extends AbstractCompactionTest {
validateSeqFiles(true);
validateTargetDatas(sourceData, Collections.emptyList());
- // generate mods file, delete d0 ~ d9 with aligned property
+ // generate mods file, delete d0 ~ d9 with nonAligned property
seriesPaths.clear();
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 15; j++) {
@@ -749,20 +848,30 @@ public class MultiTsFileDeviceIteratorTest extends AbstractCompactionTest {
deleteTimeseriesInMManager(seriesPaths);
- // generate mods file, delete d0 ~ d9 with nonAligned property
+ // generate mods file, delete d0 ~ d9 with aligned property
createFiles(1, 10, 5, 100, 2000, 2000, 50, 50, true, true);
tsFileManager.add(seqResources.get(seqResources.size() - 1), true);
+ timeseriesPaths.clear();
+ for (int i = 0; i < 30; i++) {
+ for (int j = 0; j < 15; j++) {
+ timeseriesPaths.add(
+ new AlignedPath(
+ COMPACTION_TEST_SG + PATH_SEPARATOR + "d" + i,
+ Collections.singletonList("s" + j),
+ Collections.singletonList(new MeasurementSchema("s" + j, TSDataType.INT64))));
+ }
+ }
sourceData = readSourceFiles(timeseriesPaths, Collections.emptyList());
// sort the deviceId in lexicographical order from small to large
- List<String> deviceIds = new ArrayList<>();
+ deviceIds = new ArrayList<>();
for (int i = 0; i < 30; i++) {
deviceIds.add("root.testsg.d" + (i + TsFileGeneratorUtils.getAlignDeviceOffset()));
}
deviceIds.sort(String::compareTo);
- int deviceNum = 0;
+ deviceNum = 0;
try (MultiTsFileDeviceIterator multiTsFileDeviceIterator =
new MultiTsFileDeviceIterator(tsFileManager.getTsFileList(true))) {
while (multiTsFileDeviceIterator.hasNextDevice()) {
@@ -823,6 +932,29 @@ public class MultiTsFileDeviceIteratorTest extends AbstractCompactionTest {
createFiles(2, 10, 15, 100, 2000, 2000, 50, 50, true, true);
tsFileManager.addAll(seqResources, true);
+ // sort the deviceId in lexicographical order from small to large
+ List<String> deviceIds = new ArrayList<>();
+ for (int i = 0; i < 30; i++) {
+ deviceIds.add("root.testsg.d" + (i + TsFileGeneratorUtils.getAlignDeviceOffset()));
+ }
+ deviceIds.sort(String::compareTo);
+
+ int deviceNum = 0;
+ try (MultiTsFileDeviceIterator multiTsFileDeviceIterator =
+ new MultiTsFileDeviceIterator(tsFileManager.getTsFileList(true))) {
+ while (multiTsFileDeviceIterator.hasNextDevice()) {
+ Pair<String, Boolean> deviceInfo = multiTsFileDeviceIterator.nextDevice();
+ Assert.assertEquals(deviceIds.get(deviceNum), deviceInfo.left);
+ if (Integer.parseInt(deviceInfo.left.substring(13)) < 10) {
+ Assert.assertTrue(deviceInfo.right);
+ } else {
+ Assert.assertFalse(deviceInfo.right);
+ }
+ deviceNum++;
+ }
+ }
+ Assert.assertEquals(30, deviceNum);
+
List<PartialPath> timeseriesPaths = new ArrayList<>();
for (int i = 0; i < 30; i++) {
for (int j = 0; j < 15; j++) {
@@ -873,16 +1005,18 @@ public class MultiTsFileDeviceIteratorTest extends AbstractCompactionTest {
createFiles(1, 10, 5, 100, 2000, 2000, 50, 50, false, true);
tsFileManager.add(seqResources.get(seqResources.size() - 1), true);
- sourceData = readSourceFiles(timeseriesPaths, Collections.emptyList());
-
- // sort the deviceId in lexicographical order from small to large
- List<String> deviceIds = new ArrayList<>();
+ timeseriesPaths.clear();
for (int i = 0; i < 30; i++) {
- deviceIds.add("root.testsg.d" + (i + TsFileGeneratorUtils.getAlignDeviceOffset()));
+ for (int j = 0; j < 15; j++) {
+ timeseriesPaths.add(
+ new MeasurementPath(
+ COMPACTION_TEST_SG + PATH_SEPARATOR + "d" + i + PATH_SEPARATOR + "s" + j,
+ TSDataType.INT64));
+ }
}
- deviceIds.sort(String::compareTo);
+ sourceData = readSourceFiles(timeseriesPaths, Collections.emptyList());
- int deviceNum = 0;
+ deviceNum = 0;
try (MultiTsFileDeviceIterator multiTsFileDeviceIterator =
new MultiTsFileDeviceIterator(tsFileManager.getTsFileList(true))) {
while (multiTsFileDeviceIterator.hasNextDevice()) {
@@ -928,7 +1062,7 @@ public class MultiTsFileDeviceIteratorTest extends AbstractCompactionTest {
createFiles(3, 10, 5, 100, 0, 0, 50, 50, true, true);
createFiles(4, 30, 5, 100, 1000, 0, 50, 50, true, true);
- // generate mods file, delete d0 ~ d9 with nonAligned property
+ // generate mods file, delete d0 ~ d9 with aligned property
List<String> seriesPaths = new ArrayList<>();
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 5; j++) {
@@ -939,10 +1073,33 @@ public class MultiTsFileDeviceIteratorTest extends AbstractCompactionTest {
generateModsFile(seriesPaths, unseqResources, Long.MIN_VALUE, Long.MAX_VALUE);
deleteTimeseriesInMManager(seriesPaths);
- // generate d0 ~ d9 with aligned property
+ // generate d0 ~ d9 with nonAligned property
createFiles(2, 10, 15, 100, 2000, 2000, 50, 50, false, true);
tsFileManager.addAll(seqResources, true);
+ // sort the deviceId in lexicographical order from small to large
+ List<String> deviceIds = new ArrayList<>();
+ for (int i = 0; i < 30; i++) {
+ deviceIds.add("root.testsg.d" + (i + TsFileGeneratorUtils.getAlignDeviceOffset()));
+ }
+ deviceIds.sort(String::compareTo);
+
+ int deviceNum = 0;
+ try (MultiTsFileDeviceIterator multiTsFileDeviceIterator =
+ new MultiTsFileDeviceIterator(tsFileManager.getTsFileList(true))) {
+ while (multiTsFileDeviceIterator.hasNextDevice()) {
+ Pair<String, Boolean> deviceInfo = multiTsFileDeviceIterator.nextDevice();
+ Assert.assertEquals(deviceIds.get(deviceNum), deviceInfo.left);
+ if (Integer.parseInt(deviceInfo.left.substring(13)) < 10) {
+ Assert.assertFalse(deviceInfo.right);
+ } else {
+ Assert.assertTrue(deviceInfo.right);
+ }
+ deviceNum++;
+ }
+ }
+ Assert.assertEquals(30, deviceNum);
+
List<PartialPath> timeseriesPaths = new ArrayList<>();
for (int i = 0; i < 30; i++) {
for (int j = 0; j < 15; j++) {
@@ -977,7 +1134,7 @@ public class MultiTsFileDeviceIteratorTest extends AbstractCompactionTest {
validateSeqFiles(true);
validateTargetDatas(sourceData, Collections.emptyList());
- // generate mods file, delete d0 ~ d9 with aligned property
+ // generate mods file, delete d0 ~ d9 with nonAligned property
seriesPaths.clear();
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 15; j++) {
@@ -989,20 +1146,30 @@ public class MultiTsFileDeviceIteratorTest extends AbstractCompactionTest {
deleteTimeseriesInMManager(seriesPaths);
- // generate mods file, delete d0 ~ d9 with nonAligned property
+ // generate mods file, delete d0 ~ d9 with aligned property
createFiles(1, 10, 5, 100, 2000, 2000, 50, 50, true, true);
tsFileManager.add(seqResources.get(seqResources.size() - 1), true);
+ timeseriesPaths.clear();
+ for (int i = 0; i < 30; i++) {
+ for (int j = 0; j < 15; j++) {
+ timeseriesPaths.add(
+ new AlignedPath(
+ COMPACTION_TEST_SG + PATH_SEPARATOR + "d" + i,
+ Collections.singletonList("s" + j),
+ Collections.singletonList(new MeasurementSchema("s" + j, TSDataType.INT64))));
+ }
+ }
sourceData = readSourceFiles(timeseriesPaths, Collections.emptyList());
// sort the deviceId in lexicographical order from small to large
- List<String> deviceIds = new ArrayList<>();
+ deviceIds = new ArrayList<>();
for (int i = 0; i < 30; i++) {
deviceIds.add("root.testsg.d" + (i + TsFileGeneratorUtils.getAlignDeviceOffset()));
}
deviceIds.sort(String::compareTo);
- int deviceNum = 0;
+ deviceNum = 0;
try (MultiTsFileDeviceIterator multiTsFileDeviceIterator =
new MultiTsFileDeviceIterator(tsFileManager.getTsFileList(true))) {
while (multiTsFileDeviceIterator.hasNextDevice()) {