开始

flushQueue

是否还有DWPT

取出一个DWPT

u38_seg0 u38_seg1

synchronized开始

将DWPT中收集的索引信息

生成一个段newSegment

添加删除文件事件到eventQueue

是否生成复合文件?

u44_seg0 u44_seg1

是否发生堆积?

u47_seg0 u47_seg1
u48_seg0 u48_seg1 u48_seg2 u48_seg3 u48_seg4

添加`强制发布生成的段`的事件到eventQueue中

u51_seg0 u51_seg1

执行完doFLush后的工作

u54_seg0 u54_seg1
u55_seg0 u55_seg1 u55_seg2 u55_seg3 u55_seg4

u57_seg0 u57_seg1 u57_seg2

尝试发布生成的段

u59_seg0 u59_seg1 u59_seg2

是否处理删除信息?

u62_seg0 u62_seg1
u63_seg0 u63_seg1

添加处理删除信息事件到eventQueue

结束

u66_seg0 u66_seg1
u67_seg0 u67_seg1 u67_seg2 u67_seg3 u67_seg4

synchronized结束

主动flush

flushQueue

是否还有DWPT

或者

DWPTP中是否还有被置为flushPending的

ThreadState?

开始

自动flush

u75_seg0 u75_seg1
u76_seg0 u76_seg1

是否新增删除信息?

删除信息添加到

全局BufferedUpdates

u79_seg0 u79_seg1

全局BufferedUpdates

是否有删除信息?

u81_seg0 u81_seg1
u82_seg0 u82_seg1 u82_seg2 u82_seg3 u82_seg4

生成FrozenBufferedUpdates

并清空全局BufferedUpdates

u86_seg0 u86_seg1
u87_seg0 u87_seg1

更新DWPT的私有BufferedUpdates

u89_seg0 u89_seg1
u90_seg0 u90_seg1 u90_seg2 u90_seg3 u90_seg4

DWPT是否取自

flushQueue?

u94_seg0 u94_seg1

更新拖延状态

u96_seg0 u96_seg1
u97_seg0 u97_seg1
u98_seg0 u98_seg1 u98_seg2 u98_seg3 u98_seg4

FlushTicket添加到TicketQueue

u102_seg0 u102_seg1
u103_seg0 u103_seg1 u103_seg2 u103_seg3