THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
- 为每个待合并源文件加读锁,并set IsCompacting为true
- 创建临时的目标文件列表,为 .cross 文件
- 创建合并日志,为 .compaction.log 文件
- 调用CompactionUtils工具的compact接口,执行具体的跨空间合并。
- 将临时目标文件 .cross文件重命名为 .tsfile 文件,并序列化目标文件的 resource 文件,即 .tsfile.resource 文件
- 更新相关内存:
- 更新 TsFileResourceManager,移除源文件的 TsFileResource 并增加目标文件的 TsFileResource
- TsFileResourceList 加写锁
- 移除 更新 TsFileManager,移除 TsFileResourceList 里源文件的 TsFileResource,并在相同位置增加目标文件的 TsFileResource
- TsFileResourceList 释放写锁
- 给每个源文件释放读锁,并加写锁
- 将合并过程中对所有待合并源文件产生的 .compaction.mods 文件里的删除操作合并到目标文件的 .mods 文件里
- 删除本地源文件和对应的.resource文件
- 删除源文件对应的本地.mods文件和.compaction.mods文件
- 删除合并日志
- 给每个源文件释放写锁,并set isCompacting为false,isCompactionCandidate为false
...