开始

IndexWriter.commit()

u142_seg0 u142_seg1

检查pendingCommit

执行commit前的工作

u145_seg0 u145_seg1
u146_seg0 u146_seg1

synchronized(commit)开始

收集所有达到flush条件的DWPT

执行DWPT的doFlush()

u150_seg0 u150_seg1
u151_seg0 u151_seg1

synchronized(fullFlushLock)开始

更新删除信息

u154_seg0 u154_seg1

强制发布生成的段

IndexWriter处理事件

更新ReaderPool

u158_seg0 u158_seg1
u159_seg0 u159_seg1
u160_seg0 u160_seg1

设置commitUserData

u162_seg0 u162_seg1 u162_seg2 u162_seg3

更新索引文件的计数引用

u164_seg0 u164_seg1

执行commit后的工作

执行flush后的工作

执行同步磁盘工作

u168_seg0 u168_seg1
u169_seg0 u169_seg1
u170_seg0 u170_seg1

尝试段合并

结束

u173_seg0 u173_seg1
u174_seg0 u174_seg1 u174_seg2 u174_seg3 u174_seg4 u174_seg5

synchronized(commit)结束

synchronized(fullFlushLock)结束

两阶段提交之第一阶段

两阶段提交之第二阶段

开始

IndexWriter.flush()

u181_seg0 u181_seg1

执行flush前的工作

u183_seg0 u183_seg1

收集所有达到flush条件的DWPT

u185_seg0 u185_seg1

synchronized(fullFlushLock)开始

执行DWPT的doFlush()

u188_seg0 u188_seg1 u188_seg2 u188_seg3

IndexWriter.flush()

u190_seg0 u190_seg1 u190_seg2 u190_seg3

开始

自动flush

u193_seg0 u193_seg1
u194_seg0 u194_seg1 u194_seg2 u194_seg3

更新删除信息

强制发布生成的段

u197_seg0 u197_seg1

IndexWriter处理事件

u199_seg0 u199_seg1

更新ReaderPool

尝试段合并

u202_seg0 u202_seg1

IndexWriter处理事件

u204_seg0 u204_seg1 u204_seg2 u204_seg3

自动flush

u206_seg0 u206_seg1

结束

u208_seg0 u208_seg1

结束

u210_seg0 u210_seg1

文档提交之commit

文档提交之flush

synchronized(commit)结束

synchronized(commit)开始

synchronized(commit)结束

生成新的Segment_N文件

执行检查点(checkPoint)工作

设置rollbackSegments

u219_seg0 u219_seg1
u220_seg0 u220_seg1

更新索引文件的计数引用

u222_seg0 u222_seg1
u223_seg0 u223_seg1