Skip to content

Commit be172fb

Browse files
authored
add encrypt param when constructing CompactionTsFileReader (apache#16578)
* add encrypt param when constructing CompactionTsFileReader * use get path instead of get databaseName
1 parent 41fd7b8 commit be172fb

File tree

6 files changed

+45
-9
lines changed

6 files changed

+45
-9
lines changed

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/MultiTsFileDeviceIterator.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.apache.iotdb.db.storageengine.dataregion.modification.TreeDeletionEntry;
3333
import org.apache.iotdb.db.storageengine.dataregion.read.control.FileReaderManager;
3434
import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
35+
import org.apache.iotdb.db.utils.EncryptDBUtils;
3536
import org.apache.iotdb.db.utils.ModificationUtils;
3637
import org.apache.iotdb.db.utils.datastructure.PatternTreeMapFactory;
3738

@@ -98,7 +99,9 @@ public MultiTsFileDeviceIterator(List<TsFileResource> tsFileResources) throws IO
9899
for (TsFileResource tsFileResource : this.tsFileResourcesSortedByDesc) {
99100
CompactionTsFileReader reader =
100101
new CompactionTsFileReader(
101-
tsFileResource.getTsFilePath(), CompactionType.INNER_SEQ_COMPACTION);
102+
tsFileResource.getTsFilePath(),
103+
CompactionType.INNER_SEQ_COMPACTION,
104+
EncryptDBUtils.getFirstEncryptParamFromTSFilePath(tsFileResource.getTsFilePath()));
102105
readerMap.put(tsFileResource, reader);
103106
deviceIteratorMap.put(tsFileResource, reader.getAllDevicesIteratorWithIsAligned());
104107
}
@@ -163,7 +166,10 @@ public MultiTsFileDeviceIterator(
163166

164167
for (TsFileResource tsFileResource : tsFileResourcesSortedByDesc) {
165168
TsFileSequenceReader reader =
166-
new CompactionTsFileReader(tsFileResource.getTsFilePath(), type);
169+
new CompactionTsFileReader(
170+
tsFileResource.getTsFilePath(),
171+
type,
172+
EncryptDBUtils.getFirstEncryptParamFromTSFilePath(tsFileResource.getTsFilePath()));
167173
readerMap.put(tsFileResource, reader);
168174
deviceIteratorMap.put(tsFileResource, reader.getAllDevicesIteratorWithIsAligned());
169175
}

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/io/CompactionTsFileReader.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@
1919

2020
package org.apache.iotdb.db.storageengine.dataregion.compaction.io;
2121

22+
import org.apache.iotdb.commons.utils.TestOnly;
2223
import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.constant.CompactionType;
2324

25+
import org.apache.tsfile.encrypt.EncryptParameter;
2426
import org.apache.tsfile.file.IMetadataIndexEntry;
2527
import org.apache.tsfile.file.header.ChunkHeader;
2628
import org.apache.tsfile.file.metadata.MetadataIndexNode;
@@ -42,16 +44,27 @@
4244
* data read and distinguishing between aligned and not aligned series during compaction.
4345
*/
4446
public class CompactionTsFileReader extends TsFileSequenceReader {
47+
@TestOnly
48+
public CompactionTsFileReader(String file, CompactionType compactionType) throws IOException {
49+
super(file, new EncryptParameter(config.getEncryptType(), config.getEncryptKey()));
50+
CompactionTsFileInput compactionTsFileInput =
51+
new CompactionTsFileInput(compactionType, tsFileInput);
52+
this.tsFileInput = compactionTsFileInput;
53+
compactionTsFileInput.setMetadataOffset(readFileMetadata().getMetaOffset());
54+
}
4555

4656
/**
4757
* Constructs a new instance of CompactionTsFileReader.
4858
*
4959
* @param file The file to be read.
5060
* @param compactionType The type of compaction running.
61+
* @param encryptParameter The first encryption parameters for the file.
5162
* @throws IOException If an error occurs during file operations.
5263
*/
53-
public CompactionTsFileReader(String file, CompactionType compactionType) throws IOException {
54-
super(file);
64+
public CompactionTsFileReader(
65+
String file, CompactionType compactionType, EncryptParameter encryptParameter)
66+
throws IOException {
67+
super(file, encryptParameter);
5568
CompactionTsFileInput compactionTsFileInput =
5669
new CompactionTsFileInput(compactionType, tsFileInput);
5770
this.tsFileInput = compactionTsFileInput;

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairDataFileScanUtil.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
3030
import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.ArrayDeviceTimeIndex;
3131
import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.ITimeIndex;
32+
import org.apache.iotdb.db.utils.EncryptDBUtils;
3233

3334
import org.apache.tsfile.common.conf.TSFileDescriptor;
3435
import org.apache.tsfile.common.constant.TsFileConstant;
@@ -110,7 +111,8 @@ public void scanTsFile(boolean checkTsFileResource) {
110111
tsfile.getPath(),
111112
resource.isSeq()
112113
? CompactionType.INNER_SEQ_COMPACTION
113-
: CompactionType.INNER_UNSEQ_COMPACTION)) {
114+
: CompactionType.INNER_UNSEQ_COMPACTION,
115+
EncryptDBUtils.getFirstEncryptParamFromTSFilePath(tsfile.getAbsolutePath()))) {
114116
TsFileDeviceIterator deviceInFileIterator = reader.getAllDevicesIteratorWithIsAligned();
115117
Set<IDeviceID> deviceIdsInTimeIndex =
116118
checkTsFileResource ? new HashSet<>(timeIndex.getDevices()) : Collections.emptySet();

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/AbstractCrossSpaceEstimator.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduleContext;
2424
import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.constant.CompactionType;
2525
import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
26+
import org.apache.iotdb.db.utils.EncryptDBUtils;
2627

2728
import org.apache.tsfile.read.TsFileSequenceReader;
2829

@@ -38,7 +39,10 @@ public abstract class AbstractCrossSpaceEstimator extends AbstractCompactionEsti
3839

3940
@Override
4041
protected TsFileSequenceReader getReader(String filePath) throws IOException {
41-
return new CompactionTsFileReader(filePath, CompactionType.CROSS_COMPACTION);
42+
return new CompactionTsFileReader(
43+
filePath,
44+
CompactionType.CROSS_COMPACTION,
45+
EncryptDBUtils.getFirstEncryptParamFromTSFilePath(filePath));
4246
}
4347

4448
public long estimateCrossCompactionMemory(

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/AbstractInnerSpaceEstimator.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionScheduleContext;
2525
import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.constant.CompactionType;
2626
import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
27+
import org.apache.iotdb.db.utils.EncryptDBUtils;
2728

2829
import org.apache.tsfile.read.TsFileSequenceReader;
2930

@@ -39,9 +40,15 @@ public abstract class AbstractInnerSpaceEstimator extends AbstractCompactionEsti
3940
@Override
4041
protected TsFileSequenceReader getReader(String filePath) throws IOException {
4142
if (filePath.contains(IoTDBConstant.UNSEQUENCE_FOLDER_NAME)) {
42-
return new CompactionTsFileReader(filePath, CompactionType.INNER_UNSEQ_COMPACTION);
43+
return new CompactionTsFileReader(
44+
filePath,
45+
CompactionType.INNER_UNSEQ_COMPACTION,
46+
EncryptDBUtils.getFirstEncryptParamFromTSFilePath(filePath));
4347
} else {
44-
return new CompactionTsFileReader(filePath, CompactionType.INNER_SEQ_COMPACTION);
48+
return new CompactionTsFileReader(
49+
filePath,
50+
CompactionType.INNER_SEQ_COMPACTION,
51+
EncryptDBUtils.getFirstEncryptParamFromTSFilePath(filePath));
4552
}
4653
}
4754

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/CompactionEstimateUtils.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.constant.CompactionType;
2727
import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
2828
import org.apache.iotdb.db.storageengine.rescon.memory.SystemInfo;
29+
import org.apache.iotdb.db.utils.EncryptDBUtils;
2930

3031
import org.apache.tsfile.enums.TSDataType;
3132
import org.apache.tsfile.file.metadata.ChunkMetadata;
@@ -169,7 +170,10 @@ static CompactionTaskMetadataInfo collectMetadataInfoFromDisk(
169170
for (TsFileResource resource : resources) {
170171
cost += resource.getTotalModSizeInByte();
171172
try (CompactionTsFileReader reader =
172-
new CompactionTsFileReader(resource.getTsFilePath(), taskType)) {
173+
new CompactionTsFileReader(
174+
resource.getTsFilePath(),
175+
taskType,
176+
EncryptDBUtils.getFirstEncryptParamFromTSFilePath(resource.getTsFilePath()))) {
173177
for (Map.Entry<IDeviceID, Long> entry :
174178
getDeviceMetadataSizeMapAndCollectMetadataInfo(reader, metadataInfo).entrySet()) {
175179
deviceMetadataSizeMap.merge(entry.getKey(), entry.getValue(), Long::sum);

0 commit comments

Comments
 (0)