Brooklyn Nicholson
3a0e7df799
fix(state): a busy session store reads as busy, not as damaged or empty
...
A concurrent WAL checkpoint / reset / frame-flush can surface SQLITE_IOERR
to a reader on a perfectly healthy database: a mode=ro connection cannot
perform the WAL recovery the read needs, because recovery writes the -shm
index and read-only mode refuses. The window is millisecond-scale.
Today that one-shot error escapes the SessionDB read-only constructor, and
GET /api/sessions turns it into a 500 the desktop reads as an authoritative
empty list.
Retry it, bounded, in the constructor so every read-only opener is covered —
the sidebar poll, cross-profile aggregation, recall, browse — rather than at
one route. A persistent IOERR still exhausts the budget and propagates.
Remaining transient failures answer 503, so the client keeps the list it has.
On the write path, BEGIN IMMEDIATE can hit the same transient IOERR before
the callback runs. That one is safe to retry on the same connection because
nothing has been mutated; once the callback starts, settlement is unknown and
the error propagates. Never close()+reopen to heal it — close() cancels this
process's POSIX advisory locks on the file for every sibling connection, and
a list poll's reader must stay disposable so a replaced state.db is observed
and the pre-repair forensic backup stays reachable.
Fixes #100436
Co-authored-by: rkfshakti <rkfshakti@users.noreply.github.com >
Co-authored-by: AKAZIK-py <AKAZIK-py@users.noreply.github.com >
2026-09-01 22:42:19 -05:00
..
2026-09-01 11:47:38 +10:00
2026-08-12 18:52:08 -07:00
2026-09-01 16:01:53 -04:00
2026-08-28 15:22:16 +10:00
2026-09-01 10:12:21 -07:00
2026-09-01 16:01:53 -04:00
2026-09-01 22:42:19 -05:00
2026-08-31 12:29:27 -07:00
2026-08-23 01:47:26 -07:00
2026-08-23 01:47:26 -07:00
2026-08-28 05:15:06 -07:00
2026-09-01 01:30:09 -07:00
2026-08-20 03:05:46 -07:00
2026-08-31 10:41:54 -07:00
2026-08-31 12:36:33 -07:00
2026-08-02 14:55:32 +05:30
2026-08-08 23:56:46 -07:00
2026-08-27 13:27:24 +05:30
2026-08-12 16:26:55 -07:00
2026-08-07 08:57:39 -07:00
2026-08-07 08:57:39 -07:00
2026-08-31 11:19:05 -07:00
2026-08-23 20:00:53 -07:00
2026-09-01 18:20:18 -03:00
2026-07-11 12:28:55 +05:30
2026-09-01 16:01:53 -04:00
2026-07-31 21:21:20 -07:00
2026-08-26 16:45:22 -07:00
2026-08-07 17:45:06 +05:30
2026-08-29 20:07:53 -07:00
2026-08-20 21:54:25 -07:00
2026-08-19 19:34:36 -07:00
2026-08-02 20:21:59 -07:00
2026-08-08 15:10:35 +05:30
2026-08-16 06:32:08 -07:00
2026-08-31 10:09:42 -07:00
2026-07-29 11:53:39 -07:00
2026-09-01 16:01:53 -04:00
2026-08-24 15:42:58 +05:30
2026-07-29 08:42:16 -07:00
2026-08-23 02:14:35 -07:00
2026-07-01 23:51:54 +05:30
2026-08-29 19:14:36 -07:00
2026-06-01 19:51:03 -07:00
2026-09-02 08:35:36 +10:00
2026-08-25 02:45:10 -07:00
2026-09-01 10:56:49 -07:00
2026-08-27 13:27:24 +05:30
2026-08-01 10:52:34 -07:00
2026-07-22 21:17:21 -07:00
2026-08-19 19:22:48 -07:00
2026-08-31 03:37:43 -07:00
2026-09-01 08:31:37 -07:00
2026-08-31 10:08:13 -07:00
2026-08-24 15:45:52 +05:30
2026-09-01 07:00:54 -07:00
2026-06-27 21:30:37 -07:00
2026-08-31 13:11:41 -07:00
2026-08-29 18:10:47 -07:00
2026-08-13 02:38:28 -07:00
2026-06-30 17:29:23 -07:00
2026-07-07 04:09:35 -07:00
2026-08-13 02:38:28 -07:00
2026-08-31 21:59:11 +05:30
2026-09-01 10:56:49 -07:00
2026-08-15 13:28:14 -07:00
2026-07-26 23:41:54 -07:00
2026-07-31 22:35:26 -07:00
2026-07-26 18:10:34 -07:00
2026-08-20 02:06:05 -07:00
2026-08-21 14:13:28 +10:00
2026-09-01 11:43:36 -07:00
2026-09-01 11:43:36 -07:00
2026-08-26 16:45:22 -07:00
2026-08-21 02:48:14 +08:00
2026-09-01 22:09:24 -05:00
2026-08-18 16:08:29 -07:00
2026-09-01 08:30:45 -07:00
2026-08-26 11:41:04 -07:00
2026-07-26 17:46:29 -07:00
2026-07-15 07:39:42 -07:00
2026-08-30 19:46:14 -07:00
2026-09-01 16:01:53 -04:00
2026-08-27 17:45:43 -05:00
2026-08-27 19:07:15 +05:30
2026-07-15 07:39:17 -07:00
2026-08-10 12:43:46 -07:00
2026-07-15 07:39:17 -07:00
2026-08-10 12:43:46 -07:00
2026-08-28 22:38:01 -05:00
2026-08-28 22:38:01 -05:00
2026-07-27 21:10:51 -07:00
2026-09-01 22:09:24 -05:00
2026-07-05 13:42:46 -07:00
2026-08-29 17:43:38 -07:00
2026-08-28 09:05:19 +05:30
2026-09-01 17:53:28 -04:00
2026-06-19 07:46:33 -07:00
2026-08-31 12:50:29 -07:00
2026-08-25 04:21:37 -07:00
2026-08-25 04:21:37 -07:00
2026-06-21 19:05:27 -07:00
2026-08-07 09:44:21 -07:00
2026-08-02 22:44:38 +05:30
2026-06-22 19:16:47 -05:00
2026-08-26 15:48:39 -07:00
2026-07-29 11:53:39 -07:00
2026-08-12 21:50:35 -07:00
2026-08-12 21:50:35 -07:00
2026-08-01 14:52:18 -07:00
2026-08-14 01:31:31 -07:00
2026-08-14 01:06:13 -07:00
2026-08-29 20:39:44 +05:30
2026-08-21 14:38:19 -07:00
2026-08-14 01:06:13 -07:00
2026-09-01 18:20:18 -03:00
2026-09-01 18:20:18 -03:00
2026-09-01 18:20:18 -03:00
2026-09-01 16:37:36 -03:00
2026-06-21 22:43:48 -07:00
2026-07-29 10:13:50 -07:00
2026-09-01 10:56:49 -07:00
2026-08-14 21:35:30 -07:00
2026-07-29 10:14:11 -07:00
2026-09-01 12:07:35 -07:00
2026-07-29 17:51:40 -05:00
2026-07-02 05:10:31 -07:00
2026-08-09 10:33:58 -07:00
2026-08-15 00:32:44 -07:00
2026-08-12 20:10:51 -07:00
2026-08-12 20:10:51 -07:00
2026-08-31 08:41:15 -07:00
2026-08-12 18:52:08 -07:00
2026-08-12 19:56:44 -07:00
2026-08-19 19:34:36 -07:00
2026-08-27 22:05:40 -05:00
2026-07-28 22:42:19 -07:00
2026-08-26 17:42:58 -07:00
2026-07-15 07:39:17 -07:00
2026-08-06 05:00:17 +05:30
2026-09-01 01:00:23 -07:00
2026-06-25 16:40:26 -05:00
2026-08-15 00:33:11 -07:00
2026-08-16 06:24:56 -07:00
2026-07-31 21:21:16 -07:00
2026-08-21 00:24:32 -07:00
2026-09-01 16:01:53 -04:00
2026-07-29 11:53:39 -07:00
2026-05-28 02:36:09 -07:00
2026-08-31 10:08:48 -07:00
2026-07-29 10:14:11 -07:00
2026-08-14 13:51:26 -07:00
2026-06-27 15:59:00 -07:00
2026-08-19 08:52:03 -07:00
2026-08-10 17:02:56 -07:00
2026-07-29 17:13:48 +05:30
2026-09-01 16:01:53 -04:00
2026-06-17 01:04:26 +08:00
2026-08-15 01:55:22 -07:00
2026-05-29 13:24:12 -07:00
2026-07-29 11:53:39 -07:00
2026-08-01 10:47:20 -07:00
2026-08-08 12:32:23 -07:00
2026-08-31 12:05:07 -07:00
2026-08-15 02:04:49 -07:00
2026-07-07 12:36:41 -07:00
2026-08-15 02:04:49 -07:00
2026-07-26 19:30:21 -07:00
2026-08-31 14:40:09 -07:00
2026-08-15 00:31:37 -07:00
2026-07-17 04:53:38 -07:00
2026-08-12 19:43:47 -07:00
2026-08-20 02:06:05 -07:00
2026-07-26 08:43:24 -07:00
2026-08-19 19:34:36 -07:00
2026-09-02 08:35:36 +10:00
2026-08-08 15:10:35 +05:30
2026-08-24 20:25:10 -07:00
2026-08-29 19:15:32 -07:00
2026-08-05 11:59:33 +05:30
2026-07-21 21:00:43 -05:00
2026-07-29 09:33:48 -07:00
2026-08-18 02:27:18 -07:00
2026-07-24 16:00:03 -07:00
2026-07-31 23:18:12 -07:00
2026-06-25 16:40:26 -05:00
2026-09-01 10:56:49 -07:00
2026-08-16 01:54:35 -07:00
2026-05-28 22:26:25 -07:00
2026-08-07 17:45:06 +05:30
2026-06-05 03:20:10 -07:00
2026-08-15 18:15:18 -07:00
2026-08-02 16:16:36 -07:00
2026-08-29 19:14:15 -07:00
2026-09-02 08:35:36 +10:00
2026-08-31 10:08:31 -07:00
2026-08-31 10:08:31 -07:00
2026-08-22 13:39:04 -04:00
2026-09-01 07:00:54 -07:00
2026-09-02 01:52:11 +05:30
2026-08-26 11:41:04 -07:00
2026-09-01 07:00:54 -07:00
2026-07-31 22:28:46 -07:00
2026-09-01 07:00:54 -07:00
2026-09-01 07:00:54 -07:00
2026-08-14 16:43:37 -07:00
2026-07-29 19:48:37 -07:00
2026-08-07 10:11:05 -07:00
2026-08-15 01:05:39 -07:00
2026-07-29 16:21:54 -07:00
2026-08-16 20:53:44 -07:00
2026-08-27 02:17:56 -07:00
2026-09-01 17:53:28 -04:00
2026-07-24 11:45:57 -07:00
2026-07-29 10:14:11 -07:00
2026-08-01 14:30:16 -07:00
2026-08-19 23:55:20 -07:00
2026-08-31 07:27:50 -07:00
2026-06-09 23:21:14 -07:00
2026-08-06 05:00:17 +05:30