开始

flushQueue

是否还有DWPT

取出一个DWPT

u4_seg0 u4_seg1

synchronized开始

将DWPT中收集的索引信息

生成一个段newSegment

添加删除文件事件到eventQueue

是否生成复合文件?

u10_seg0 u10_seg1

是否发生堆积?

u13_seg0 u13_seg1
u14_seg0 u14_seg1 u14_seg2 u14_seg3 u14_seg4

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

u17_seg0 u17_seg1

执行完doFLush后的工作

u20_seg0 u20_seg1
u21_seg0 u21_seg1 u21_seg2 u21_seg3 u21_seg4

u23_seg0 u23_seg1 u23_seg2

尝试发布生成的段

u25_seg0 u25_seg1 u25_seg2

是否处理删除信息?

u28_seg0 u28_seg1
u29_seg0 u29_seg1

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

结束

u32_seg0 u32_seg1
u33_seg0 u33_seg1 u33_seg2 u33_seg3 u33_seg4

synchronized结束

主动flush

flushQueue

是否还有DWPT

或者

DWPTP中是否还有被置为flushPending的

ThreadState?

开始

自动flush

u41_seg0 u41_seg1
u42_seg0 u42_seg1

是否新增删除信息?

删除信息添加到

全局BufferedUpdates

u45_seg0 u45_seg1

全局BufferedUpdates

是否有删除信息?

u47_seg0 u47_seg1
u48_seg0 u48_seg1 u48_seg2 u48_seg3 u48_seg4

生成FrozenBufferedUpdates

并清空全局BufferedUpdates

u52_seg0 u52_seg1
u53_seg0 u53_seg1

更新DWPT的私有BufferedUpdates

u55_seg0 u55_seg1
u56_seg0 u56_seg1 u56_seg2 u56_seg3 u56_seg4

DWPT是否取自

flushQueue?

u60_seg0 u60_seg1

更新拖延状态

u62_seg0 u62_seg1
u63_seg0 u63_seg1
u64_seg0 u64_seg1 u64_seg2 u64_seg3 u64_seg4

FlushTicket添加到TicketQueue

u68_seg0 u68_seg1
u69_seg0 u69_seg1 u69_seg2 u69_seg3