Files
OpenList/internal/conf/var.go
jenfonro 549e60136b fix(fs):fix retry task after restart (#1467)
* 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>
2025-10-18 20:52:02 +08:00

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()
}