diff --git a/kernel/api/block.go b/kernel/api/block.go index 1ee9b5d40..e355c3b85 100644 --- a/kernel/api/block.go +++ b/kernel/api/block.go @@ -174,6 +174,11 @@ func checkBlockExist(c *gin.Context) { ret.Data = id return } + if errors.Is(err, model.ErrIndexing) { + ret.Code = 3 + ret.Data = id + return + } ret.Data = nil != b } @@ -377,6 +382,11 @@ func getBlockInfo(c *gin.Context) { ret.Data = id return } + if errors.Is(err, model.ErrIndexing) { + ret.Code = 3 + ret.Data = id + return + } if nil == block { ret.Code = -1 ret.Msg = fmt.Sprintf(model.Conf.Language(15), id) @@ -403,6 +413,11 @@ func getBlockInfo(c *gin.Context) { ret.Data = id return } + if errors.Is(err, model.ErrIndexing) { + ret.Code = 3 + ret.Data = id + return + } rootTitle := root.IAL["title"] rootTitle = html.UnescapeString(rootTitle) ret.Data = map[string]string{ diff --git a/kernel/model/block.go b/kernel/model/block.go index c74528b38..774ea05cf 100644 --- a/kernel/model/block.go +++ b/kernel/model/block.go @@ -393,11 +393,10 @@ func getBlock(id string) (ret *Block, err error) { tree, err := loadTreeByBlockID(id) if nil != err { - waitForIndexing() - tree, err = loadTreeByBlockID(id) - if nil != err { - return + if indexing { + err = ErrIndexing } + return } node := treenode.GetNodeInTree(tree, id) diff --git a/kernel/model/tree.go b/kernel/model/tree.go index e80c43316..18fbe81bc 100644 --- a/kernel/model/tree.go +++ b/kernel/model/tree.go @@ -138,9 +138,12 @@ func loadTree(localPath string, luteEngine *lute.Lute) (ret *parse.Tree, err err return } -var ErrBoxNotFound = errors.New("notebook not found") -var ErrBlockNotFound = errors.New("block not found") -var ErrTreeNotFound = errors.New("tree not found") +var ( + ErrBoxNotFound = errors.New("notebook not found") + ErrBlockNotFound = errors.New("block not found") + ErrTreeNotFound = errors.New("tree not found") + ErrIndexing = errors.New("indexing") +) func loadTreeByBlockID(id string) (ret *parse.Tree, err error) { if "" == id {