🎨 改进内核任务调度机制提升稳定性 https://github.com/siyuan-note/siyuan/issues/7113

This commit is contained in:
Liang Ding 2023-01-25 13:09:10 +08:00
parent 430c8cbf6a
commit 9d009fe5f9
No known key found for this signature in database
GPG key ID: 136F30F901A2231D

View file

@ -399,7 +399,14 @@ func indexTree(tx *sql.Tx, box, p string, context map[string]interface{}) (err e
return
}
err = upsertTree(tx, tree, context)
err = insertTree(tx, tree, context)
return
}
func insertTree(tx *sql.Tx, tree *parse.Tree, context map[string]interface{}) (err error) {
blocks, spans, assets, attributes := fromTree(tree.Root, tree)
refs, fileAnnotationRefs := refsFromTree(tree)
err = insertTree0(tx, tree, context, blocks, spans, assets, attributes, refs, fileAnnotationRefs)
return
}
@ -431,7 +438,10 @@ func upsertTree(tx *sql.Tx, tree *parse.Tree, context map[string]interface{}) (e
for _, b := range blocks {
toRemoves = append(toRemoves, b.ID)
}
deleteBlocksByIDs(tx, toRemoves)
if err = deleteBlocksByIDs(tx, toRemoves); nil != err {
return
}
if err = deleteSpansByPathTx(tx, tree.Box, tree.Path); nil != err {
return
@ -449,11 +459,20 @@ func upsertTree(tx *sql.Tx, tree *parse.Tree, context map[string]interface{}) (e
return
}
refs, fileAnnotationRefs := refsFromTree(tree)
if err = insertTree0(tx, tree, context, blocks, spans, assets, attributes, refs, fileAnnotationRefs); nil != err {
return
}
return err
}
func insertTree0(tx *sql.Tx, tree *parse.Tree, context map[string]interface{},
blocks []*Block, spans []*Span, assets []*Asset, attributes []*Attribute,
refs []*Ref, fileAnnotationRefs []*FileAnnotationRef) (err error) {
if err = insertBlocks(tx, blocks, context); nil != err {
return
}
refs, fileAnnotationRefs := refsFromTree(tree)
if err = insertBlockRefs(tx, refs); nil != err {
return
}
@ -476,5 +495,5 @@ func upsertTree(tx *sql.Tx, tree *parse.Tree, context map[string]interface{}) (e
if err = insertAttributes(tx, attributes); nil != err {
return
}
return err
return
}