qiaojialin commented on a change in pull request #4498:
URL: https://github.com/apache/iotdb/pull/4498#discussion_r767220961
##########
File path:
server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/utils/InnerSpaceCompactionUtils.java
##########
@@ -541,24 +542,64 @@ private static boolean isFileListHasModifications(
public static void deleteTsFilesInDisk(
Collection<TsFileResource> mergeTsFiles, String storageGroupName) {
- logger.info("{} [compaction] merge starts to delete real file ",
storageGroupName);
+ logger.info("{} [Compaction] Compaction starts to delete real file ",
storageGroupName);
for (TsFileResource mergeTsFile : mergeTsFiles) {
deleteTsFile(mergeTsFile);
logger.info(
"{} [Compaction] delete TsFile {}", storageGroupName,
mergeTsFile.getTsFilePath());
}
}
+ /** Delete all modification files for source files */
+ public static void deleteModificationForSourceFile(
+ Collection<TsFileResource> sourceFiles, String storageGroupName) throws
IOException {
+ logger.info("{} [Compaction] Start to delete modifications of source
files", storageGroupName);
+ for (TsFileResource tsFileResource : sourceFiles) {
+ ModificationFile compactionModificationFile =
+ ModificationFile.getCompactionMods(tsFileResource);
+ if (compactionModificationFile.exists()) {
+ compactionModificationFile.remove();
+ }
+
+ ModificationFile normalModification =
ModificationFile.getNormalMods(tsFileResource);
+ if (normalModification.exists()) {
+ normalModification.remove();
+ }
+ }
+ }
+
+ /**
+ * Collect all the compaction modification files of source files, and
combines them as the
+ * modification file of target file.
+ */
+ public static void combineModsInCompaction(
+ Collection<TsFileResource> mergeTsFiles, TsFileResource targetTsFile)
throws IOException {
+ List<Modification> modifications = new ArrayList<>();
+ for (TsFileResource mergeTsFile : mergeTsFiles) {
+ try (ModificationFile sourceCompactionModificationFile =
+ ModificationFile.getCompactionMods(mergeTsFile)) {
+
modifications.addAll(sourceCompactionModificationFile.getModifications());
+ }
+ }
+ if (!modifications.isEmpty()) {
+ try (ModificationFile modificationFile =
ModificationFile.getNormalMods(targetTsFile)) {
+ for (Modification modification : modifications) {
+ // we have to set modification offset to MAX_VALUE, as the offset of
source chunk may
+ // change after compaction
+ modification.setFileOffset(Long.MAX_VALUE);
+ modificationFile.write(modification);
+ }
+ }
+ }
+ }
+
public static void deleteTsFile(TsFileResource seqFile) {
Review comment:
could this be replaced by TsFileResource.remove()?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]