splitsec2
f560b31ee4
fix(db): wait up to 30 s for a busy writer instead of SQLite's 5 s default ( #1539 )
...
The users, download history and activity view-state databases open their
connections with SQLite's default busy timeout of 5 seconds. A start-up
migration, the restart reconcile, or any statement that overlaps a
backup or a second process raised "database is locked" after 5 seconds,
and the reconcile finished only part of its work.
One shared `DB_BUSY_TIMEOUT_SECONDS` (30) in `core/utils.py`, used by
all three. The test reads SQLite's `busy_timeout` pragma back from each
connection, so it doesn't need a real lock fight.
I left `UserDB.initialize()` without a guard on purpose. With 30 seconds
the wait covers a backup, and swallowing a schema failure there would
hide a worker that can't run.
Found in a Claude pass over 1.5.0.
2026-10-22 20:21:49 -04:00
..
2026-07-28 15:19:59 -04:00
2026-01-01 12:35:22 +00:00
2026-10-21 01:39:14 -04:00
2026-10-21 01:58:41 -04:00
2026-04-12 12:01:52 +01:00
2026-10-21 02:05:05 -04:00
2026-10-02 22:45:48 -04:00
2026-08-13 13:51:40 -04:00
2026-09-19 23:27:13 -04:00
2026-10-20 01:22:05 -04:00
2026-04-12 12:01:52 +01:00
2026-02-20 09:53:47 +00:00
2026-03-07 10:30:47 +00:00
2026-04-12 12:01:52 +01:00
2026-08-11 23:27:44 -04:00
2026-09-25 18:14:42 -04:00
2026-10-22 15:29:34 -04:00
2026-10-20 23:35:42 -04:00
2026-10-21 01:34:38 -04:00
2026-08-15 11:40:32 -04:00
2026-10-22 20:21:49 -04:00
2026-10-20 23:34:32 -04:00
2026-09-17 15:52:21 -04:00
2026-09-17 16:27:53 -04:00
2026-10-20 23:20:04 -04:00
2026-05-08 11:17:49 +01:00
2026-10-20 23:40:16 -04:00
2026-09-11 00:47:37 -04:00
2026-10-22 15:32:00 -04:00
2026-10-21 01:58:41 -04:00
2026-08-21 10:43:06 -04:00
2026-10-21 02:06:31 -04:00
2026-07-28 15:19:59 -04:00
2026-07-28 15:19:59 -04:00
2026-10-20 00:58:49 -04:00
2026-09-25 18:18:10 -04:00
2026-10-20 01:55:49 -04:00
2026-08-24 17:57:21 -04:00
2026-09-25 18:18:10 -04:00
2026-04-15 18:50:13 +01:00
2026-09-17 15:52:21 -04:00
2026-10-02 22:45:10 -04:00
2026-04-12 12:01:52 +01:00
2026-10-22 15:29:34 -04:00
2026-10-22 15:29:34 -04:00
2026-04-12 12:01:52 +01:00
2026-09-25 18:56:16 -04:00
2026-09-20 12:51:21 -04:00
2026-04-15 18:50:13 +01:00
2026-04-11 16:18:52 +01:00
2026-07-21 15:41:03 -04:00
2026-05-10 09:29:49 +01:00
2026-10-21 02:05:05 -04:00
2026-08-11 12:23:34 -04:00
2026-04-23 20:56:10 +01:00
2026-10-20 02:33:53 -04:00
2026-10-20 02:03:05 -04:00
2026-10-20 23:29:05 -04:00
2026-08-11 01:05:23 -04:00
2026-10-20 23:19:33 -04:00
2026-10-22 20:19:16 -04:00
2026-08-27 00:40:08 -04:00
2026-10-20 23:38:40 -04:00
2026-10-20 00:59:54 -04:00
2026-10-22 20:17:44 -04:00
2026-08-24 17:57:21 -04:00
2026-10-20 01:08:45 -04:00
2026-03-05 19:53:22 +00:00
2026-04-12 12:01:52 +01:00
2026-10-20 23:20:26 -04:00
2026-10-20 23:21:16 -04:00
2026-09-11 22:14:37 -04:00
2026-10-22 20:17:44 -04:00
2026-08-30 03:09:13 -04:00
2026-09-01 11:08:39 -04:00
2026-04-12 12:01:52 +01:00
2026-10-21 02:05:05 -04:00
2026-10-21 01:34:38 -04:00
2026-10-20 23:20:04 -04:00
2026-10-02 22:45:48 -04:00
2026-09-25 18:18:10 -04:00
2026-08-15 11:40:32 -04:00
2026-02-11 17:44:27 +00:00
2026-06-15 00:28:43 -04:00
2026-10-02 20:38:58 -04:00
2026-04-10 13:03:25 +01:00