From 24ef743d2479fa2cc4a666a9254659c29ff28fce Mon Sep 17 00:00:00 2001 From: dkeven <82354774+dkeven@users.noreply.github.com> Date: Thu, 23 Oct 2025 23:45:33 +0800 Subject: [PATCH] fix(cli): lazy load DID cache db upon invoke (#1977) --- cli/pkg/web5/jws/checkjws.go | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/cli/pkg/web5/jws/checkjws.go b/cli/pkg/web5/jws/checkjws.go index bff93fd8c..7495f8fde 100644 --- a/cli/pkg/web5/jws/checkjws.go +++ b/cli/pkg/web5/jws/checkjws.go @@ -9,6 +9,7 @@ import ( "os" "strconv" "strings" + "sync" "time" "github.com/beclab/Olares/cli/pkg/web5/crypto/dsa" @@ -24,10 +25,18 @@ var ( ) var ( - db *leveldb.DB + db *leveldb.DB + dbOnce sync.Once ) -func init() { +func getDB() *leveldb.DB { + dbOnce.Do(func() { + initDB() + }) + return db +} + +func initDB() { var ( err error info os.FileInfo @@ -84,7 +93,7 @@ type CheckJWSResult struct { func ResolveOlaresName(olares_id string) (*didcore.ResolutionResult, error) { name := strings.Replace(olares_id, "@", ".", -1) // Try to get from cache first - cached, err := db.Get([]byte(name), nil) + cached, err := getDB().Get([]byte(name), nil) if err == nil { var result didcore.ResolutionResult if err := json.Unmarshal(cached, &result); err == nil { @@ -117,7 +126,7 @@ func ResolveOlaresName(olares_id string) (*didcore.ResolutionResult, error) { } // Cache the result - if err := db.Put([]byte(name), body, nil); err != nil { + if err := getDB().Put([]byte(name), body, nil); err != nil { // Log error but don't fail fmt.Printf("failed to cache DID document: %v\n", err) }