THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
- 将文件根据重叠情况整理成簇List<List<TsFileResource>> unseqFileClusters
- for fileCluster in unseqFileCluster
- if fileCluster.size() == 1
- if fileCluster 中仅有的这个文件大小 > cross_space_fragment_file_target_size && 没有未关闭的临时文件
- 将该文件进行重命名后移动到顺序文件空间中
- else
- 将该文件的内容解压缩写到一个临时的文件中(如果有未关闭的临时文件,则写到未关闭的文件中)
- 判断临时文件的大小,如果够大就将其封口然后重命名并且移动到顺序文件列表中
- continue
- if fileCluster 中仅有的这个文件大小 > cross_space_fragment_file_target_size && 没有未关闭的临时文件
- else
- 将 fileCluster 中的 unseqFile 合并到一个临时文件中(执行流程就是乱序空间内文件合并的流程)(如果有未关闭的临时文件,则放到未关闭的临时文件中;否则新建一个临时文件),然后将该临时文件经过重命名后移动到顺序文件列表中
- if fileCluster.size() == 1
将乱序文件整理成簇
输入:乱序文件列表 unseqFileList
输出:List<List<TsFileResource>> 文件簇列表,每个文件簇中的文件必然至少与同一簇中的一个文件发生了重叠
将乱序文件根据 startTime 进行排序得到 unseqFileListOrderByTime
- fileCluster = []
- tmpCluster = []
- for unseqFile in unseqFileListOrderByTime
- if tmpCluster.size() == 0
- tmpCluster.add(unseqFile)
- tmpClusterEndTime = unseqFile.endTime, tmpClusterStartTime=unseqFile.startTime
- else
- 如果 tmpCluster 和 unseqFile 发生了重叠(和文件重叠的判断相同)
- tmpCluster.add(unseqFile)
- tmpClusterEndTime = max(tmpClusterEndTime, unseqFile.endTime)
- tmpClusterStartTime = max(tmpClusterStartTime, unseqFile.startTime)
- else
- fileCluster.add(tmpCluster)
- tmpCluster=[]
- tmpCluster.add(unseqFile)
- tmpClusterEndTime = unseqFile.endTime, tmpClusterStartTime=unseqFile.startTime
- 如果 tmpCluster 和 unseqFile 发生了重叠(和文件重叠的判断相同)
- if tmpCluster.size() == 0
重命名规则
输入:一个要移动到顺序文件列表中的乱序文件或者临时文件 file
...