|
30 | 30 | import org.apache.iotdb.db.service.metrics.FileMetrics; |
31 | 31 | import org.apache.iotdb.db.storageengine.dataregion.compaction.constant.CompactionTaskType; |
32 | 32 | import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionTaskManager; |
| 33 | +import org.apache.iotdb.db.storageengine.dataregion.modification.Deletion; |
33 | 34 | import org.apache.iotdb.db.storageengine.dataregion.modification.Modification; |
34 | 35 | import org.apache.iotdb.db.storageengine.dataregion.modification.ModificationFile; |
35 | 36 | import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource; |
|
48 | 49 |
|
49 | 50 | import java.io.File; |
50 | 51 | import java.io.IOException; |
| 52 | +import java.util.ArrayList; |
51 | 53 | import java.util.Collection; |
52 | 54 | import java.util.Collections; |
53 | 55 | import java.util.HashSet; |
@@ -376,13 +378,23 @@ public static void deleteTsFileResourceWithoutLock(TsFileResource resource) { |
376 | 378 | public static List<Modification> getMatchedModifications( |
377 | 379 | PatternTreeMap<Modification, PatternTreeMapFactory.ModsSerializer> patternTreeMap, |
378 | 380 | IDeviceID deviceID, |
379 | | - String measurement) |
| 381 | + String measurement, |
| 382 | + Deletion ttlDeletion) |
380 | 383 | throws IllegalPathException { |
381 | | - if (patternTreeMap == null) { |
382 | | - return Collections.emptyList(); |
| 384 | + if ((patternTreeMap == null) || patternTreeMap.isEmpty()) { |
| 385 | + return ttlDeletion == null ? Collections.emptyList() : Collections.singletonList(ttlDeletion); |
383 | 386 | } |
384 | 387 | PartialPath path = CompactionPathUtils.getPath(deviceID, measurement); |
385 | | - return ModificationFile.sortAndMerge(patternTreeMap.getOverlapped(path)); |
| 388 | + List<Modification> modifications = patternTreeMap.getOverlapped(path); |
| 389 | + if (ttlDeletion != null) { |
| 390 | + if (!(modifications instanceof ArrayList)) { |
| 391 | + List<Modification> newModEntries = new ArrayList<>(modifications.size() + 1); |
| 392 | + newModEntries.addAll(modifications); |
| 393 | + modifications = newModEntries; |
| 394 | + } |
| 395 | + modifications.add(ttlDeletion); |
| 396 | + } |
| 397 | + return ModificationFile.sortAndMerge(modifications); |
386 | 398 | } |
387 | 399 |
|
388 | 400 | public static boolean isDiskHasSpace() { |
|
0 commit comments