mirror of
https://github.com/OpenListTeam/OpenList.git
synced 2025-11-25 19:37:41 +08:00
* fix retry task after restart * fix: initialize SrcStorage and DstStorage in tasks to prevent nil pointer dereference * feat: implement storage load signal mechanism for improved synchronization * fix: update StoragesLoaded logic * refactor: reorganize storage loading logic and improve synchronization handling --------- Co-authored-by: j2rong4cn <j2rong@qq.com>
73 lines
1.3 KiB
Go
73 lines
1.3 KiB
Go
package conf
|
|
|
|
import (
|
|
"net/url"
|
|
"regexp"
|
|
"sync"
|
|
)
|
|
|
|
var (
|
|
BuiltAt string = "unknown"
|
|
GitAuthor string = "unknown"
|
|
GitCommit string = "unknown"
|
|
Version string = "dev"
|
|
WebVersion string = "rolling"
|
|
)
|
|
|
|
var (
|
|
Conf *Config
|
|
URL *url.URL
|
|
)
|
|
|
|
var SlicesMap = make(map[string][]string)
|
|
var FilenameCharMap = make(map[string]string)
|
|
var PrivacyReg []*regexp.Regexp
|
|
|
|
var (
|
|
// 单个Buffer最大限制
|
|
MaxBufferLimit = 16 * 1024 * 1024
|
|
// 超过该阈值的Buffer将使用 mmap 分配,可主动释放内存
|
|
MmapThreshold = 4 * 1024 * 1024
|
|
)
|
|
var (
|
|
RawIndexHtml string
|
|
ManageHtml string
|
|
IndexHtml string
|
|
)
|
|
|
|
var (
|
|
// StoragesLoaded loaded success if empty
|
|
StoragesLoaded = false
|
|
storagesLoadMu sync.RWMutex
|
|
storagesLoadSignal chan struct{} = make(chan struct{})
|
|
)
|
|
|
|
func StoragesLoadSignal() <-chan struct{} {
|
|
storagesLoadMu.RLock()
|
|
ch := storagesLoadSignal
|
|
storagesLoadMu.RUnlock()
|
|
return ch
|
|
}
|
|
func SendStoragesLoadedSignal() {
|
|
storagesLoadMu.Lock()
|
|
select {
|
|
case <-storagesLoadSignal:
|
|
// already closed
|
|
default:
|
|
StoragesLoaded = true
|
|
close(storagesLoadSignal)
|
|
}
|
|
storagesLoadMu.Unlock()
|
|
}
|
|
func ResetStoragesLoadSignal() {
|
|
storagesLoadMu.Lock()
|
|
select {
|
|
case <-storagesLoadSignal:
|
|
StoragesLoaded = false
|
|
storagesLoadSignal = make(chan struct{})
|
|
default:
|
|
// not closed -> nothing to do
|
|
}
|
|
storagesLoadMu.Unlock()
|
|
}
|