Run the local index in WAL mode with a busy timeout (closes #217)
check / check (pull_request) Successful in 5m49s
check / check (pull_request) Successful in 5m49s
The connection settings were passed as `_journal_mode=`-style parameters, which the SQLite driver drops without an error, so the index ran in rollback-journal mode with no busy timeout. `snapshot list` or `info` reading during a backup could make the backup's next write fail with "database is locked". Both open paths now pass `_pragma=` parameters; foreign keys moved there too. With WAL on, rows committed to the open index can still be in the -wal file, which a copy of the main file misses. The metadata export now copies the index with VACUUM INTO, into an empty 0600 file. The retry after a failed open no longer claims a TRUNCATE recovery; it retries with the same settings. Model: opus-5-5
This commit is contained in:
@@ -22,6 +22,15 @@ the tag exists and is exercised; what is left is merging `next` to
|
||||
|
||||
# Completed Steps
|
||||
|
||||
- 2026-10-06: Made the local index actually run in WAL mode with a busy
|
||||
timeout ([issue #217](https://git.eeqj.de/sneak/vaultik/issues/217)).
|
||||
The connection settings were written in a form the SQLite driver
|
||||
ignores, so the index ran without either and `snapshot list` or `info`
|
||||
during a backup could make the backup's next write fail with
|
||||
`database is locked`. They are now `_pragma=` parameters, and the
|
||||
metadata export copies the open index with `VACUUM INTO`, because a
|
||||
copy of the file alone misses rows still in the `-wal` file.
|
||||
|
||||
- 2026-10-06: Made a backup record the real uid and gid of files,
|
||||
directories and symlinks
|
||||
([issue #216](https://git.eeqj.de/sneak/vaultik/issues/216)). The
|
||||
|
||||
Reference in New Issue
Block a user