From ad4324bb66db411fa697918d1f0008b28f79a9c9 Mon Sep 17 00:00:00 2001 From: andig Date: Fri, 10 Jul 2026 07:57:26 +0200 Subject: [PATCH] sqlite: serialize access on a single connection (#30902) --- server/db/db.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/server/db/db.go b/server/db/db.go index 1a21b7c52..6e613e1c7 100644 --- a/server/db/db.go +++ b/server/db/db.go @@ -73,9 +73,20 @@ func New(driver, dsn string) (*gorm.DB, error) { return nil, fmt.Errorf("invalid database type: %s not in [sqlite]", driver) } - return gorm.Open(dialect, &gorm.Config{ + db, err := gorm.Open(dialect, &gorm.Config{ Logger: &Logger{util.NewLogger("db")}, }) + if err != nil { + return nil, err + } + + // sqlite allows a single writer; serialize on one connection so concurrent + // writes wait on busy_timeout instead of failing with SQLITE_BUSY. + if sqlDB, err := db.DB(); err == nil { + sqlDB.SetMaxOpenConns(1) + } + + return db, nil } func NewInstance(driver, dsn string) error {