开始

IndexWriter.commit()

u4_seg0 u4_seg1

检查pendingCommit

执行commit前的工作

u7_seg0 u7_seg1
u8_seg0 u8_seg1

synchronized(commit)开始

收集所有达到flush条件的DWPT

执行DWPT的doFlush()

u12_seg0 u12_seg1
u13_seg0 u13_seg1

synchronized(fullFlushLock)开始

更新删除信息

u16_seg0 u16_seg1

强制发布生成的段

IndexWriter处理事件

更新ReaderPool

u20_seg0 u20_seg1
u21_seg0 u21_seg1
u22_seg0 u22_seg1

设置commitUserData

u24_seg0 u24_seg1 u24_seg2 u24_seg3

更新索引文件的计数引用

u26_seg0 u26_seg1

执行commit后的工作

执行flush后的工作

执行同步磁盘工作

u30_seg0 u30_seg1
u31_seg0 u31_seg1
u32_seg0 u32_seg1

生成新的Segment_N文件

执行检查点(checkPoint)工作

设置rollbackSegments

尝试段合并

结束

u38_seg0 u38_seg1
u39_seg0 u39_seg1 u39_seg2 u39_seg3 u39_seg4 u39_seg5
u40_seg0 u40_seg1
u41_seg0 u41_seg1

synchronized(commit)结束

synchronized(fullFlushLock)结束

两阶段提交之第一阶段

两阶段提交之第二阶段

synchronized(commit)开始

synchronized(commit)结束

更新索引文件的计数引用

u49_seg0 u49_seg1
u50_seg0 u50_seg1