THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
空间内合并文件选择
- 新建临时候选任务队列 tempTaskQueue
- 遍历所有 TsFileResource,获取当前 TsFileResource 的最高层级 maxSearchLevel
- currentLevel 从 0 到 maxSearchLevel
- 新建标志量 submitInCurrentLevel = false
- 临时文件列表 tempResourceList
- 遍历每一个 TsFileResource
- 如果当前 tsFileResource 的层级为 currentLevel,并且 !isDeleted() && !isCompacting() && closed() && !isCompactionCandidate()
- 将其加入到 tempResourceList 中
- 如果 tempResourceList 的大小到达了目标数目或者其中所有文件体积之和超过了目标大小
- 将其加入到 tempTaskQueue 中
- 清空tempResourceList
- submitInCurrentLevel = true
- 如果当前 tsFileResource 的层级为 currentLevel,并且 !isDeleted() && !isCompacting() && closed() && !isCompactionCandidate()
- 如果 submitInCurrentLevel == true
- break
- 从 tempTaskQueue 中逐一取出其中的任务
- 将任务中的所有 tsFileResource 的 isCompactionCandidate 设置为 true
- 将任务提交到全局的暂存队列中