diff --git a/bin/.gitkeep b/bin/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/extension/interface.go b/extension/interface.go index 7d3d747..7551828 100644 --- a/extension/interface.go +++ b/extension/interface.go @@ -67,7 +67,8 @@ func (s *extensionService) Start() error { table := db.GetTable[extensionData]() extdata, err := table.All() if err != nil { - return fmt.Errorf("failed to select enabled extensions: %w", err) + // Extensions are optional, skip if database not available + return nil } for _, data := range extdata { if !data.Enable { diff --git a/v2/db/hiddify_db.go b/v2/db/hiddify_db.go index d64eaa8..9840017 100644 --- a/v2/db/hiddify_db.go +++ b/v2/db/hiddify_db.go @@ -4,28 +4,20 @@ import ( "bytes" "encoding/gob" "fmt" - "log" "reflect" - "time" "github.com/syndtr/goleveldb/leveldb/opt" tmdb "github.com/tendermint/tm-db" ) -// getDB initializes the database with retry logic. If it fails after 100 attempts, it returns nil. +// getDB initializes the database. If it fails, it returns nil silently. func getDB(name string, readOnly bool) tmdb.DB { - const retryAttempts = 100 - const retryDelay = 100 * time.Microsecond - - for i := 0; i < retryAttempts; i++ { - db, err := tmdb.NewGoLevelDBWithOpts(name, "./data", &opt.Options{ReadOnly: readOnly}) - if err == nil { - return db - } - log.Printf("Failed attempt %d to initialize the database: %v", i, err) - time.Sleep(retryDelay) + db, err := tmdb.NewGoLevelDBWithOpts(name, "./data", &opt.Options{ReadOnly: readOnly}) + if err != nil { + // Extension database is optional, skip silently + return nil } - return nil + return db } // GetTable returns a new Table instance for the generic type T, ensuring the struct has an "Id" field.