开始

SegmentInfos

u112_seg0 u112_seg1

是否能获得索引

文件segment_N

的文件名?

索引目录中

是否还有未处理

的索引文件?

索引文件是否

满足要求?

取出一个索引文件

u117_seg0 u117_seg1
u118_seg0 u118_seg1 u118_seg2 u118_seg3 u118_seg4

u121_seg0 u121_seg1

初始化索引文件的

计数引用

索引文件是否为segments_N?

根据segments_N获取一个新的SegmentInfos

两个SegmentInfos

的generation是否相同?

根据新的SegmentInfos

获取CommitPoint

添加CommitPoint到CommitPoint集合commits中

增加新的SegmentInfos对应的索引文件的计数

u129_seg0 u129_seg1
u130_seg0 u130_seg1
u131_seg0 u131_seg1
u132_seg0 u132_seg1

另CommitPoint为当前提交点currentCommitPoint

u136_seg0 u136_seg1
u137_seg0 u137_seg1 u137_seg2 u137_seg3

是否出现异常?

是否出现异常?

处理异常

u141_seg0 u141_seg1