This is an automated email from the ASF dual-hosted git repository. xingtanzjr pushed a commit to branch xingtanzjr/refine_cross_selection in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 5a8e43df3d0d4de881dd6747a2638cc858866894 Author: Jinrui.Zhang <[email protected]> AuthorDate: Thu Dec 22 00:14:01 2022 +0800 fix the bug when checking target seq files --- .../cross/rewrite/CrossSpaceCompactionCandidate.java | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/rewrite/CrossSpaceCompactionCandidate.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/rewrite/CrossSpaceCompactionCandidate.java index 4ff2759af4..f3ddb7c230 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/rewrite/CrossSpaceCompactionCandidate.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/cross/rewrite/CrossSpaceCompactionCandidate.java @@ -70,12 +70,9 @@ public class CrossSpaceCompactionCandidate { private boolean prepareNextSplit() { TsFileResourceCandidate unseqFile = unseqFiles.get(nextUnseqFileIndex); List<TsFileResourceCandidate> ret = new ArrayList<>(); - boolean lastTargetSeqFileSelected = false; - for (TsFileResourceCandidate seqFile : seqFiles) { - if (lastTargetSeqFileSelected) { - break; - } - for (DeviceInfo unseqDeviceInfo : unseqFile.getDevices()) { + + for (DeviceInfo unseqDeviceInfo : unseqFile.getDevices()) { + for (TsFileResourceCandidate seqFile : seqFiles) { if (!seqFile.containsDevice(unseqDeviceInfo.deviceId)) { continue; } @@ -92,24 +89,21 @@ public class CrossSpaceCompactionCandidate { // avoid duplication selection if (!seqFile.selected) { ret.add(seqFile); + seqFile.markAsSelected(); } - // prepare - lastTargetSeqFileSelected = true; + // if this condition is satisfied, all subsequent seq files is unnecessary to check break; } else if (unseqDeviceInfo.startTime <= seqDeviceInfo.endTime) { if (!seqFile.selected) { ret.add(seqFile); + seqFile.markAsSelected(); } - break; } } } // mark candidates in next split as selected even though it may not be added to the final // TaskResource unseqFile.markAsSelected(); - for (TsFileResourceCandidate fileCandidate : ret) { - fileCandidate.markAsSelected(); - } nextSplit = new CrossCompactionTaskResourceSplit(unseqFile, ret); return true; }
