THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
当选中的顺序文件超过compaction_cross_space_max_select_seq_file_num,则将选中的顺序文件和乱序文件提交任务
文件选择算法
输入:顺序文件列表 seqFileList、乱序文件列表 unseqFileList
- 将顺序文件列表按照时间顺序从新到老排序得到 seqFileListOrderByTime
- 将乱序文件列表按照版本从老到新进行排序得到 unseqFileListOrderByVersion
- selectedFiles=Map<TsFileResource, List<TsFileResource>>, selectedUnseqFiles=Set<TsFileResource>
- hasSelect = false
- 遍历顺序文件列表 for seqFile in seqFileListOrderByTime
- 如果 seqFile 正在合并 || seqFile 未关闭
- 如果 selectedFiles 非空
- 提交一个合并任务,清空 selectedFiles 和 selectedUnseqFiles, hasSelect = true
- if currentTaskNum >= MAX_COMPACTION_THREAD_NUM || compactionStrategy = BALANCE
- return hasSelect
- continue
- 如果 selectedFiles 非空
- continueToNext
- 遍历乱序文件列表 for unseqFile in unseqFileListOrderByVersion
- if unseqFile 和 seqFile 有数据重叠
- if unseqFile 未关闭 || unseqFile 正在合并
- 如果 selectedFiles 非空
- 提交一个合并任务,清空 selectedFiles, hasSelect = true
- if currentTaskNum >= MAX_COMPACTION_THREAD_NUM || compactionStrategy = BALANCE
- return hasSelect
- 如果 selectedFiles 非空
- selectedFiles[seqFile].add(unseqFile)
- if unseqFile 未关闭 || unseqFile 正在合并
- if unseqFile 和 seqFile 有数据重叠
- 如果 seqFile 正在合并 || seqFile 未关闭
执行过程
将这些文件进行跨文件空间的合并
正序遍历提交的顺序文件,对于每一个顺序文件
...