文档提交之flush的流程图

开始

IndexWriter.flush()

u178_seg0 u178_seg1

执行flush前的工作

u180_seg0 u180_seg1

收集所有达到flush条件的DWPT

synchronized开始

执行DWPT的doFlush()

u184_seg0 u184_seg1 u184_seg2 u184_seg3

IndexWriter.flush()

u186_seg0 u186_seg1 u186_seg2 u186_seg3

开始

自动flush

u189_seg0 u189_seg1
u190_seg0 u190_seg1 u190_seg2 u190_seg3

更新删除信息

强制发布生成的段

u193_seg0 u193_seg1

IndexWriter处理事件

u195_seg0 u195_seg1

更新ReaderPool

synchronized结束

尝试段合并

u199_seg0 u199_seg1

IndexWriter处理事件

u201_seg0 u201_seg1 u201_seg2 u201_seg3

自动flush

u203_seg0 u203_seg1

结束

u205_seg0 u205_seg1

结束

u207_seg0 u207_seg1
u208_seg0 u208_seg1

开始

生成新的.liv索引文件

更新DocValues域

是否还有未处理的

SegmentCommitInfo

取出一个

SegmentCommitInfo

是否有新的被标记为

删除的文档?

u215_seg0 u215_seg1
u216_seg0 u216_seg1
u217_seg0 u217_seg1
u218_seg0 u218_seg1
u219_seg0 u219_seg1
u220_seg0 u220_seg1 u220_seg2 u220_seg3 u220_seg4 u220_seg5
u221_seg0 u221_seg1 u221_seg2 u221_seg3 u221_seg4

处理需要被丢弃的段

u225_seg0 u225_seg1

结束

u227_seg0 u227_seg1

更新ReaderPool的流程图