🎨 Improve kernel stability by eliminating some data races https://github.com/siyuan-note/siyuan/issues/9842

This commit is contained in:
Daniel 2023-12-08 16:40:10 +08:00
parent d6128d9af5
commit 8c4adbc48a
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
2 changed files with 22 additions and 0 deletions

View file

@ -17,6 +17,8 @@ import (
) )
func OCRAssetsJob() { func OCRAssetsJob() {
util.WaitForTesseractInit()
if !util.TesseractEnabled { if !util.TesseractEnabled {
return return
} }
@ -25,6 +27,10 @@ func OCRAssetsJob() {
} }
func autoOCRAssets() { func autoOCRAssets() {
if !util.TesseractEnabled {
return
}
defer logging.Recover() defer logging.Recover()
assetsPath := util.GetDataAssetsAbsPath() assetsPath := util.GetDataAssetsAbsPath()

View file

@ -26,6 +26,7 @@ import (
"strconv" "strconv"
"strings" "strings"
"sync" "sync"
"sync/atomic"
"time" "time"
"github.com/88250/gulu" "github.com/88250/gulu"
@ -136,9 +137,21 @@ func Tesseract(imgAbsPath string) string {
return ret return ret
} }
var tesseractInited = atomic.Bool{}
func WaitForTesseractInit() {
for {
if tesseractInited.Load() {
return
}
time.Sleep(time.Second)
}
}
func InitTesseract() { func InitTesseract() {
ver := getTesseractVer() ver := getTesseractVer()
if "" == ver { if "" == ver {
tesseractInited.Store(true)
return return
} }
@ -146,6 +159,7 @@ func InitTesseract() {
if 1 > len(langs) { if 1 > len(langs) {
logging.LogWarnf("no tesseract langs found") logging.LogWarnf("no tesseract langs found")
TesseractEnabled = false TesseractEnabled = false
tesseractInited.Store(true)
return return
} }
@ -162,6 +176,7 @@ func InitTesseract() {
TesseractEnabled = enabledBool TesseractEnabled = enabledBool
if !enabledBool { if !enabledBool {
logging.LogInfof("tesseract-ocr disabled by env") logging.LogInfof("tesseract-ocr disabled by env")
tesseractInited.Store(true)
return return
} }
} }
@ -169,6 +184,7 @@ func InitTesseract() {
TesseractLangs = filterTesseractLangs(langs) TesseractLangs = filterTesseractLangs(langs)
logging.LogInfof("tesseract-ocr enabled [ver=%s, maxSize=%s, langs=%s]", ver, humanize.Bytes(TesseractMaxSize), strings.Join(TesseractLangs, "+")) logging.LogInfof("tesseract-ocr enabled [ver=%s, maxSize=%s, langs=%s]", ver, humanize.Bytes(TesseractMaxSize), strings.Join(TesseractLangs, "+"))
tesseractInited.Store(true)
} }
func filterTesseractLangs(langs []string) (ret []string) { func filterTesseractLangs(langs []string) (ret []string) {