Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. 为每个待合并源文件加读锁并set IsCompacting为true
  2. 创建临时的目标文件列表,为 .cross 文件
  3. 创建合并日志,为 .compaction.log 文件
  4. 调用CompactionUtils工具的compact接口,执行具体的跨空间合并。
  5. 将临时目标文件 .cross文件重命名为 .tsfile 文件,并序列化目标文件的 resource 文件,即 .tsfile.resource 文件
  6. 合并过程中对所有待合并源文件产生的 .compaction.mods 文件里的删除操作合并到目标文件的 .mods 文件里
  7. 更新相关内存:
    1. 给TsFileManager加写锁
    2. 更新 TsFileResourceManager,移除源文件的 TsFileResource 并增加目标文件的 TsFileResource
    3. TsFileResourceList 加写锁
    4. 移除 更新TsFileResourceList,移除 TsFileResourceList 里源文件的 TsFileResource,并在相同位置增加目标文件的 TsFileResource
    5. TsFileResourceList 给TsFileManager释放写锁
  8. 给每个源文件释放读锁,并加写锁
  9. 删除本地源文件和对应的.resource文件
  10. 删除源文件对应的本地.mods文件和.compaction.mods文件
  11. 删除合并日志
  12. 给每个源文件释放写锁,并set isCompacting为false,isCompactionCandidate为false

...