Run SQLite in WAL mode with a busy timeout the driver reads (closes #123)
check / check (push) Waiting to run
check / check (push) Waiting to run
The default database URL asked for WAL mode with `_journal_mode` and `_busy_timeout`, which the SQLite driver does not read, so the database ran in rollback-journal mode. The default now uses the driver's `_pragma=journal_mode(WAL)` and `_pragma=busy_timeout(5000)` parameters, in one constant that both the config default and the database fallback use. The database no longer sets its own busy timeout after opening, so the URL's value applies. A new test opens a file database with those parameters through db.New and checks the journal mode and busy timeout. README.md's database text now matches, and an in-memory test database drops the same ignored parameter. Model: opus-5-5 Co-authored-by: clawbot <sneak+clawbot@sneak.cloud>
This commit was merged in pull request #134.
This commit is contained in:
+1
-8
@@ -87,7 +87,7 @@ func (database *Database) GetDB() *sql.DB {
|
||||
func (database *Database) connect(ctx context.Context) error {
|
||||
dbURL := database.params.Config.DBURL
|
||||
if dbURL == "" {
|
||||
dbURL = "file:///var/lib/neoirc/state.db?_journal_mode=WAL&_busy_timeout=5000"
|
||||
dbURL = config.DefaultDBURL
|
||||
}
|
||||
|
||||
database.log.Info(
|
||||
@@ -116,13 +116,6 @@ func (database *Database) connect(ctx context.Context) error {
|
||||
return fmt.Errorf("enable foreign keys: %w", err)
|
||||
}
|
||||
|
||||
_, err = database.conn.ExecContext(
|
||||
ctx, "PRAGMA busy_timeout = 5000",
|
||||
)
|
||||
if err != nil {
|
||||
return fmt.Errorf("set busy timeout: %w", err)
|
||||
}
|
||||
|
||||
return database.runMigrations(ctx)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user