From ceaa2d0f6544f6bc3fb2f19f224f666ce6e68f90 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Fri, 25 Nov 2022 22:54:26 +0800 Subject: [PATCH] =?UTF-8?q?:zap:=20=E6=94=B9=E8=BF=9B=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E6=A0=91=E5=B1=95=E5=BC=80=E6=80=A7=E8=83=BD=20Fix=20https://g?= =?UTF-8?q?ithub.com/siyuan-note/siyuan/issues/6718?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/go.mod | 2 +- kernel/model/file.go | 24 ++++++++---------------- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/kernel/go.mod b/kernel/go.mod index 02452e9db..aa64ef5f8 100644 --- a/kernel/go.mod +++ b/kernel/go.mod @@ -29,6 +29,7 @@ require ( github.com/gin-gonic/gin v1.8.1 github.com/imroc/req/v3 v3.25.0 github.com/jinzhu/copier v0.3.5 + github.com/json-iterator/go v1.1.12 github.com/mattn/go-sqlite3 v2.0.3+incompatible github.com/mitchellh/go-ps v1.0.0 github.com/mssola/user_agent v0.5.3 @@ -86,7 +87,6 @@ require ( github.com/huandu/xstrings v1.3.3 // indirect github.com/imdario/mergo v0.3.13 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect - github.com/json-iterator/go v1.1.12 // indirect github.com/juju/errors v1.0.0 // indirect github.com/klauspost/compress v1.15.12 // indirect github.com/leodido/go-urn v1.2.1 // indirect diff --git a/kernel/model/file.go b/kernel/model/file.go index f082b82bb..1b233061f 100644 --- a/kernel/model/file.go +++ b/kernel/model/file.go @@ -37,6 +37,7 @@ import ( "github.com/dustin/go-humanize" "github.com/facette/natsort" "github.com/gin-gonic/gin" + jsoniter "github.com/json-iterator/go" "github.com/siyuan-note/filelock" "github.com/siyuan-note/logging" "github.com/siyuan-note/siyuan/kernel/cache" @@ -143,7 +144,7 @@ func (box *Box) docIAL(p string) (ret map[string]string) { return nil } ret = readDocIAL(data) - if nil == ret { + if 1 > len(ret) { logging.LogWarnf("tree [%s] is corrupted", filePath) box.moveCorruptedData(filePath) return nil @@ -167,22 +168,8 @@ func (box *Box) moveCorruptedData(filePath string) { } func readDocIAL(data []byte) (ret map[string]string) { - doc := map[string]interface{}{} - if err := gulu.JSON.UnmarshalJSON(data, &doc); nil != err { - logging.LogErrorf("unmarshal data failed: %s", err) - return nil - } - - propsArg := doc["Properties"] - if nil == propsArg { - return nil - } - - props := propsArg.(map[string]interface{}) ret = map[string]string{} - for k, v := range props { - ret[k] = v.(string) - } + jsoniter.Get(data, "Properties").ToVal(&ret) return } @@ -240,6 +227,11 @@ type FileInfo struct { } func ListDocTree(boxID, path string, sortMode int) (ret []*File, totals int, err error) { + //os.MkdirAll("pprof", 0755) + //cpuProfile, _ := os.Create("pprof/cpu_profile_list_doc_tree") + //pprof.StartCPUProfile(cpuProfile) + //defer pprof.StopCPUProfile() + ret = []*File{} box := Conf.Box(boxID)