You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

目的:将没有与任何顺序文件发生重叠的乱序文件填充到顺序空间中

碎文件清理任务提交

碎文件清理任务使用独立的线程池(不与空间内以及跨文件空间合并使用同一个线程池),在后台开启一个独立的线程进行定时提交。

碎文件清理任务选择流程

  • 从新到老遍历顺序文件列表 for s in seqFiles
    • s 正在合并:
      • continue
    • if s 是第一个文件
      • 按照文件版本从老到新遍历乱序文件 for u in unseqFiles:
        • if u.startTime() > s.endTime()
          • if u 未关闭 || u 正在合并
            • if UF.size() > 0
              • 提交一个碎文件清理任务,UF=[]
            • break
          • UF.add(u)
      • if UF.size() > 0
        • 提交一个碎片清理任务,UF = []
    • if s 是最后一个文件
      • 按照文件版本从老到新遍历乱序文件 for u in unseqFiles:
        • if u.endTime() < s.startTime()
          • if u 未关闭 || u 正在合并
            • if UF.size() > 0
              • 提交一个碎文件清理任务,UF=[]
            • break
          • UF.add(u)
      • if UF.size() > 0
        • 提交一个碎片清理任务,UF = []
      • break
    • 找到 s 的下一个文件 nextS
    • UF = []
    • 按照文件版本从老到新遍历乱序文件 for u in unseqFiles:
      • if u.startTime >= nextS.endTime && u.endTime  < s.startTime
        • if u 未关闭 || u 正在合并
          • if UF.size() > 0
            • 提交一个碎文件清理任务,UF=[]
          • break
        • UF.add(u)
    • 如果 UF.size() > 0
      • 提交一个碎文件清理任务,UF=[]
  • No labels