开始
flushQueue中
是否还有DWPT?
取出一个DWPT
主动flush
flushQueue中
是否还有DWPT
或者
DWPTP中是否还有被置为flushPending的
ThreadState?
开始
自动flush
是
将DWPT中收集的索引信息
生成一个段newSegment
DWPT是否取自
flushQueue?
更新拖延状态
是
synchronized开始
synchronized结束
是否新增删除信息?
删除信息添加到
全局BufferedUpdates
全局BufferedUpdates
是否有删除信息?
是
否
生成FrozenBufferedUpdates
并清空全局BufferedUpdates
更新DWPT的私有BufferedUpdates
否
是
FlushTicket添加到TicketQueue