开始

addDocument()

开始

updateDocument()

开始

softUpdateDocument()

u21_seg0 u21_seg1 u21_seg2 u21_seg3
u22_seg0 u22_seg1
u23_seg0 u23_seg1 u23_seg2 u23_seg3

处理文档(Document)

u25_seg0 u25_seg1
u26_seg0 u26_seg1
u27_seg0 u27_seg1

开始

deleteDocuments(Query)

u30_seg0 u30_seg1

开始

deleteDocuments(Term)

u33_seg0 u33_seg1

开始

updateBinaryDocValue()

u37_seg0 u37_seg1

开始

updateNumericDocValue()

u40_seg0 u40_seg1

开始

updateDocValues()

u43_seg0 u43_seg1

删除操作

添加/更新操作

是否

执行flush

u47_seg0 u47_seg1

flushQueue中

还有DWPT?

取出DWPT然后更新stall

DWPT执行doFlush

u53_seg0 u53_seg1
u54_seg0 u54_seg1 u54_seg2 u54_seg3 u54_seg4

DWPTP中是否有

状态为flushPending的

ThreadState?

u56_seg0 u56_seg1

取出DWPT

u59_seg0 u59_seg1

u61_seg0 u61_seg1 u61_seg2 u61_seg3

阻塞添加/更新操作

u63_seg0 u63_seg1

flushQueue中

还有DWPT?

u65_seg0 u65_seg1
u66_seg0 u66_seg1 u66_seg2 u66_seg3

DWPT执行doFlush

u70_seg0 u70_seg1
u71_seg0 u71_seg1 u71_seg2 u71_seg3 u71_seg4

u73_seg0 u73_seg1

DWPTP中是否有ThreadState?

取出最近完成添加文档任务的ThreadState

u76_seg0 u76_seg1

生成一个新的Threadstate

u79_seg0 u79_seg1

ThreadState

是否持有

DWPT引用?

u82_seg0 u82_seg1

从DWPTP取出持有DWPT引用的ThreadState

u86_seg0 u86_seg1 u86_seg2 u86_seg3
u87_seg0 u87_seg1 u87_seg2 u87_seg3
u88_seg0 u88_seg1

重置ThreadState

u91_seg0 u91_seg1
u92_seg0 u92_seg1 u92_seg2 u92_seg3 u92_seg4

ThreadState

是否持有

DWPT引用?

u95_seg0 u95_seg1

生成一个新的DWPT并让ThreadState引用

u97_seg0 u97_seg1
u98_seg0 u98_seg1 u98_seg2 u98_seg3

u101_seg0 u101_seg1
u102_seg0 u102_seg1

ThreadState

是否持有DWPT引用

并且全局flush被触发

u104_seg0

统计处理文档占用的内存使用量

ThreadState是否

被置为flushPending?

u107_seg0 u107_seg1
u108_seg0 u108_seg1

执行flush策略

全局flush是否被触发?

u112_seg0 u112_seg1
u113_seg0 u113_seg1 u113_seg2 u113_seg3

u115_seg0 u115_seg1

ThreadState是否

被置为flushPending?

从flushQueue取出

一个待flush的DWPT

u119_seg0 u119_seg1

ThreadState是否

被置为flushPending?

u122_seg0 u122_seg1

取出当前ThreadState持有的DWPT

u125_seg0 u125_seg1

u127_seg0 u127_seg1 u127_seg2 u127_seg3
u128_seg0 u128_seg1 u128_seg2 u128_seg3
u129_seg0 u129_seg1 u129_seg2 u129_seg3

u131_seg0 u131_seg1 u131_seg2 u131_seg3 u131_seg4

是否触发删除结点

flush

设置flushDeletes为True

u135_seg0 u135_seg1

全局flush是否已经触发?

记录待处理的删除信息

DWPT是否为空

尝试调用正在等待执行doFlush

的其他DWPT

执行DWPT的doFlush

u141_seg0 u141_seg1
u142_seg0 u142_seg1
u143_seg0 u143_seg1
u144_seg0 u144_seg1
u145_seg0 u145_seg1 u145_seg2 u145_seg3
u146_seg0 u146_seg1 u146_seg2 u146_seg3 u146_seg4
u147_seg0 u147_seg1 u147_seg2 u147_seg3 u147_seg4
u148_seg0 u148_seg1
u149_seg0 u149_seg1 u149_seg2 u149_seg3

添加删除信息到DeleteQueue中

u157_seg0 u157_seg1

是否触发删除结点

flush

u159_seg0 u159_seg1

u161_seg0 u161_seg1 u161_seg2 u161_seg3 u161_seg4

设置flushDeletes为True

执行flush策略

u165_seg0 u165_seg1

记录待处理的删除信息

u167_seg0 u167_seg1

全局flush是否已经触发?

u169_seg0 u169_seg1

结束

u172_seg0 u172_seg1
u173_seg0 u173_seg1 u173_seg2 u173_seg3 u173_seg4

是否有新增的

删除操作?

DWPT中是否已经

添加过文档?

u177_seg0 u177_seg1

更新私有DeleteSlice

u179_seg0 u179_seg1
u180_seg0 u180_seg1 u180_seg2 u180_seg3

重置DeleteSlice

u184_seg0 u184_seg1

更新BufferedUpdates

u187_seg0 u187_seg1

更新numDocsInRAM

u189_seg0 u189_seg1
u190_seg0 u190_seg1 u190_seg2 u190_seg3

u192_seg0 u192_seg1 u192_seg2 u192_seg3

更新numDocsInRAM

u194_seg0 u194_seg1
u195_seg0 u195_seg1 u195_seg2 u195_seg3

添加删除信息到DeleteQueue中

更新BufferedUpdates

u198_seg0 u198_seg1

处理删除信息

处理文档后的工作

删除操作

添加操作

更新操作

获得ThreadState

处理文档前的工作

u206_seg0 u206_seg1 u206_seg2 u206_seg3
u207_seg0 u207_seg1 u207_seg2 u207_seg3
u208_seg0 u208_seg1 u208_seg2 u208_seg3
u209_seg0 u209_seg1 u209_seg2 u209_seg3
u210_seg0 u210_seg1 u210_seg2 u210_seg3
u211_seg0 u211_seg1 u211_seg2 u211_seg3
u212_seg0 u212_seg1 u212_seg2 u212_seg3

开始

addDocument()

开始

updateDocument()

开始

softUpdateDocument()

u223_seg0 u223_seg1 u223_seg2 u223_seg3
u224_seg0 u224_seg1
u225_seg0 u225_seg1 u225_seg2 u225_seg3

处理文档(Document)

u227_seg0 u227_seg1
u228_seg0 u228_seg1
u229_seg0 u229_seg1

开始

deleteDocuments(Query)

u232_seg0 u232_seg1

开始

deleteDocuments(Term)

u235_seg0 u235_seg1

开始

updateBinaryDocValue()

u239_seg0 u239_seg1

开始

updateNumericDocValue()

u242_seg0 u242_seg1

开始

updateDocValues()

u245_seg0 u245_seg1

删除操作

添加/更新操作

是否

执行flush

u249_seg0 u249_seg1

flushQueue中

还有DWPT?

取出DWPT然后更新stall

DWPT执行doFlush

u255_seg0 u255_seg1
u256_seg0 u256_seg1 u256_seg2 u256_seg3 u256_seg4

DWPTP中是否有

状态为flushPending的

ThreadState?

u258_seg0 u258_seg1

取出DWPT

u261_seg0 u261_seg1

u263_seg0 u263_seg1 u263_seg2 u263_seg3

阻塞添加/更新操作

u265_seg0 u265_seg1

flushQueue中

还有DWPT?

u267_seg0 u267_seg1
u268_seg0 u268_seg1 u268_seg2 u268_seg3

DWPT执行doFlush

u272_seg0 u272_seg1
u273_seg0 u273_seg1 u273_seg2 u273_seg3 u273_seg4

u275_seg0 u275_seg1

DWPTP中是否有ThreadState?

取出最近完成添加文档任务的ThreadState

u278_seg0 u278_seg1

生成一个新的Threadstate

u281_seg0 u281_seg1

ThreadState

是否持有

DWPT引用?

u284_seg0 u284_seg1

从DWPTP取出持有DWPT引用的ThreadState

u288_seg0 u288_seg1 u288_seg2 u288_seg3
u289_seg0 u289_seg1 u289_seg2 u289_seg3
u290_seg0 u290_seg1

重置ThreadState

u293_seg0 u293_seg1
u294_seg0 u294_seg1 u294_seg2 u294_seg3 u294_seg4

ThreadState

是否持有

DWPT引用?

u297_seg0 u297_seg1

生成一个新的DWPT并让ThreadState引用

u299_seg0 u299_seg1
u300_seg0 u300_seg1 u300_seg2 u300_seg3

u303_seg0 u303_seg1
u304_seg0 u304_seg1

ThreadState

是否持有DWPT引用

并且全局flush被触发

u306_seg0

统计处理文档占用的内存使用量

ThreadState是否

被置为flushPending?

u309_seg0 u309_seg1
u310_seg0 u310_seg1

执行flush策略

全局flush是否被触发?

u314_seg0 u314_seg1
u315_seg0 u315_seg1 u315_seg2 u315_seg3

u317_seg0 u317_seg1

ThreadState是否

被置为flushPending?

从flushQueue取出

一个待flush的DWPT

u321_seg0 u321_seg1

ThreadState是否

被置为flushPending?

u324_seg0 u324_seg1

取出当前ThreadState持有的DWPT

u327_seg0 u327_seg1

u329_seg0 u329_seg1 u329_seg2 u329_seg3
u330_seg0 u330_seg1 u330_seg2 u330_seg3
u331_seg0 u331_seg1 u331_seg2 u331_seg3

u333_seg0 u333_seg1 u333_seg2 u333_seg3 u333_seg4

是否触发删除结点

flush

设置flushDeletes为True

u337_seg0 u337_seg1

全局flush是否已经触发?

记录待处理的删除信息

DWPT是否为空

尝试调用正在等待执行doFlush

的其他DWPT

执行DWPT的doFlush

u343_seg0 u343_seg1
u344_seg0 u344_seg1
u345_seg0 u345_seg1
u346_seg0 u346_seg1
u347_seg0 u347_seg1 u347_seg2 u347_seg3
u348_seg0 u348_seg1 u348_seg2 u348_seg3 u348_seg4
u349_seg0 u349_seg1 u349_seg2 u349_seg3 u349_seg4
u350_seg0 u350_seg1
u351_seg0 u351_seg1 u351_seg2 u351_seg3

添加删除信息到DeleteQueue中

u359_seg0 u359_seg1

是否触发删除结点

flush

u361_seg0 u361_seg1

u363_seg0 u363_seg1 u363_seg2 u363_seg3 u363_seg4

设置flushDeletes为True

执行flush策略

u367_seg0 u367_seg1

记录待处理的删除信息

u369_seg0 u369_seg1

全局flush是否已经触发?

u371_seg0 u371_seg1

结束

u374_seg0 u374_seg1
u375_seg0 u375_seg1 u375_seg2 u375_seg3 u375_seg4

是否有新增的

删除操作?

DWPT中是否已经

添加过文档?

u379_seg0 u379_seg1

更新私有DeleteSlice

u381_seg0 u381_seg1
u382_seg0 u382_seg1 u382_seg2 u382_seg3

重置DeleteSlice

u386_seg0 u386_seg1

更新BufferedUpdates

u389_seg0 u389_seg1

更新numDocsInRAM

u391_seg0 u391_seg1
u392_seg0 u392_seg1 u392_seg2 u392_seg3

u394_seg0 u394_seg1 u394_seg2 u394_seg3

更新numDocsInRAM

u396_seg0 u396_seg1
u397_seg0 u397_seg1 u397_seg2 u397_seg3

添加删除信息到DeleteQueue中

更新BufferedUpdates

u400_seg0 u400_seg1

处理删除信息

处理文档后的工作

删除操作

添加操作

更新操作

获得ThreadState

处理文档前的工作

u408_seg0 u408_seg1 u408_seg2 u408_seg3
u409_seg0 u409_seg1 u409_seg2 u409_seg3
u410_seg0 u410_seg1 u410_seg2 u410_seg3
u411_seg0 u411_seg1 u411_seg2 u411_seg3
u412_seg0 u412_seg1 u412_seg2 u412_seg3
u413_seg0 u413_seg1 u413_seg2 u413_seg3
u414_seg0 u414_seg1 u414_seg2 u414_seg3