gsxdsm
580e72b6a7
Harden background integrity-check offload (PR #1693 review)
...
Addresses review feedback (Greptile P1/P2, CodeRabbit) on the async
background integrity check. All three issues shared one root cause:
state read/cleared from a pre-await snapshot across the async boundary.
- Closed-instance race (P1): runBackgroundIntegrityCheck guards `this.closed`
before every in-process integrityCheck() call (both before the offload and
after the await). A connection closing mid-offload no longer throws out of
the scheduler.
- Stuck-pending on throw + late-subscriber race (P1/P2): the scheduler now
clears integrityCheckPending UNCONDITIONALLY in a finally, iterating the
CURRENT shared.subscribers set rather than a pre-await snapshot. A thrown
check, or a Database that subscribed during the seconds-long await window,
can no longer be left pinned at integrityCheckPending=true forever.
- No spawn timeout (P2): integrityCheckSqliteFileAsync now passes
AbortSignal.timeout(5m); a disk-stalled/hung sqlite3 child always settles
the promise (→ verified:false fallback) instead of leaking and stranding
the shared entry. AbortSignal.timeout's timer is unref'd, so it never keeps
the process alive at shutdown.
- FNXC markers added to the two new symbols (per AGENTS.md convention).
Rejected: the suggestion to remove the `// FNXC:Database` marker — FNXC is a
mandatory project convention (AGENTS.md), and a prior review flagged the
absence of these markers as a defect.
Tests: regression test that pending clears for all participants when the
check throws; test that runBackgroundIntegrityCheck returns ok without
throwing on a closed instance; strengthened the healthy-DB assertion.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-20 14:34:37 -07:00
..
2026-05-19 17:19:02 -07:00
2026-06-18 16:51:56 -07:00
2026-06-03 13:20:17 -07:00
2026-05-06 21:36:31 -07:00
2026-06-07 18:51:46 -07:00
2026-04-24 19:39:20 -07:00
2026-05-01 12:54:17 -07:00
2026-04-26 20:56:31 -07:00
2026-06-03 01:10:18 -07:00
2026-06-03 01:10:18 -07:00
2026-06-03 01:10:18 -07:00
2026-05-14 13:59:10 -07:00
2026-05-14 13:16:09 -07:00
2026-05-15 07:55:22 -07:00
2026-04-24 19:39:20 -07:00
2026-06-12 14:39:51 -07:00
2026-05-10 19:13:05 -07:00
2026-06-12 19:45:37 -07:00
2026-05-16 20:48:00 -07:00
2026-06-13 19:22:00 -07:00
2026-05-13 22:41:29 -07:00
2026-05-02 13:24:37 -07:00
2026-06-12 13:12:55 -07:00
2026-04-24 19:39:20 -07:00
2026-05-17 09:20:08 -07:00
2026-04-17 16:36:15 -07:00
2026-05-12 07:47:11 -07:00
2026-06-20 13:24:38 -07:00
2026-05-17 09:51:10 -07:00
2026-04-27 03:07:58 -07:00
2026-04-24 19:39:20 -07:00
2026-06-01 21:55:10 -07:00
2026-05-14 15:49:55 -07:00
2026-06-07 20:43:44 -07:00
2026-05-18 00:53:23 -07:00
2026-06-03 13:51:13 -07:00
2026-06-03 13:51:13 -07:00
2026-06-03 13:51:13 -07:00
2026-06-03 15:57:41 -07:00
2026-06-07 20:25:00 -07:00
2026-06-09 20:44:45 -07:00
2026-06-20 08:43:35 -07:00
2026-06-08 23:38:32 -07:00
2026-06-12 14:39:51 -07:00
2026-06-20 08:43:35 -07:00
2026-05-13 06:29:35 -07:00
2026-05-16 20:48:00 -07:00
2026-05-02 11:19:39 -07:00
2026-06-06 00:38:28 -07:00
2026-06-11 09:21:23 -07:00
2026-06-20 13:24:38 -07:00
2026-05-23 04:18:55 -07:00
2026-04-13 16:05:05 -07:00
2026-05-07 12:36:09 -07:00
2026-05-16 09:56:54 -07:00
2026-05-27 15:24:31 +02:00
2026-05-16 17:31:09 -07:00
2026-06-04 22:52:20 -07:00
2026-06-05 13:59:50 -07:00
2026-06-15 19:44:10 -07:00
2026-05-27 21:31:12 -07:00
2026-04-24 19:39:20 -07:00
2026-05-21 16:30:31 -07:00
2026-06-19 16:47:34 -07:00
2026-05-29 15:25:47 -07:00
2026-05-19 06:51:26 -07:00
2026-06-20 14:34:37 -07:00
2026-06-04 00:41:12 -07:00
2026-05-19 03:21:16 -07:00
2026-05-12 07:47:11 -07:00
2026-06-08 22:35:04 -07:00
2026-05-04 19:05:48 -07:00
2026-06-08 22:35:04 -07:00
2026-05-18 16:23:06 -07:00
2026-05-18 19:43:55 -07:00
2026-05-23 17:07:14 -07:00
2026-05-23 03:05:46 -07:00
2026-05-18 08:02:21 -07:00
2026-05-08 04:34:50 -07:00
2026-05-06 11:09:05 -07:00
2026-05-08 12:05:46 -07:00
2026-05-06 06:05:05 -07:00
2026-05-06 19:55:55 -07:00
2026-05-14 00:58:44 -07:00
2026-05-14 00:12:03 -07:00
2026-05-20 14:28:45 -07:00
2026-06-06 00:38:28 -07:00
2026-05-03 02:02:25 -07:00
2026-05-01 13:56:55 -07:00
2026-06-12 09:24:02 -07:00
2026-05-12 07:47:10 -07:00
2026-05-28 22:59:18 -07:00
2026-06-06 00:38:28 -07:00
2026-06-18 18:48:05 -07:00
2026-05-10 06:06:26 -07:00
2026-05-10 05:29:41 -07:00
2026-06-05 00:30:27 -07:00
2026-04-19 10:13:34 -07:00
2026-06-01 01:42:19 -07:00
2026-05-30 22:53:24 -07:00
2026-05-29 08:25:38 -07:00
2026-06-03 01:10:18 -07:00
2026-05-28 10:32:16 -07:00
2026-06-19 16:47:33 -07:00
2026-06-09 12:51:20 -07:00
2026-05-20 14:29:07 -07:00
2026-05-18 09:46:46 -07:00
2026-05-03 02:36:07 -07:00
2026-06-19 16:47:33 -07:00
2026-06-02 18:46:33 -07:00
2026-05-17 15:17:22 -07:00
2026-06-13 05:06:05 -07:00
2026-06-03 17:33:16 -07:00
2026-04-24 19:39:20 -07:00
2026-06-12 11:10:12 -07:00
2026-05-16 20:06:47 -07:00
2026-04-24 19:39:20 -07:00
2026-05-09 14:41:58 -07:00
2026-04-24 19:39:20 -07:00
2026-05-05 06:32:33 -07:00
2026-05-11 17:46:42 -07:00
2026-05-12 09:06:54 -07:00
2026-05-14 17:04:16 -07:00
2026-06-19 16:47:33 -07:00
2026-05-11 06:47:43 -07:00
2026-05-10 19:13:05 -07:00
2026-05-07 00:05:34 -07:00
2026-05-27 18:47:52 +02:00
2026-04-29 07:58:58 -07:00
2026-06-04 07:34:02 -07:00
2026-06-06 00:38:28 -07:00
2026-05-29 15:45:20 -07:00
2026-06-02 14:41:41 -07:00
2026-06-17 18:25:10 -07:00
2026-04-26 20:56:31 -07:00
2026-06-19 16:47:33 -07:00
2026-06-15 19:31:54 -07:00
2026-06-11 20:44:52 -07:00
2026-06-15 19:57:20 -07:00
2026-06-11 18:08:17 -07:00
2026-05-13 12:30:45 -07:00
2026-04-14 13:30:24 -07:00
2026-06-14 15:29:35 -07:00
2026-06-14 15:29:35 -07:00
2026-06-15 02:29:08 -07:00
2026-06-13 02:54:57 -07:00
2026-06-03 13:20:17 -07:00
2026-04-24 19:39:20 -07:00
2026-06-08 22:35:04 -07:00
2026-04-29 10:22:18 -07:00
2026-05-17 19:36:13 -07:00
2026-06-13 23:20:06 -07:00
2026-06-15 20:59:57 -07:00
2026-04-29 07:35:23 -07:00
2026-06-09 12:51:20 -07:00
2026-06-19 16:47:33 -07:00
2026-06-07 20:43:44 -07:00
2026-04-23 23:11:58 -07:00
2026-06-07 20:43:44 -07:00
2026-05-11 06:47:43 -07:00
2026-06-19 16:47:33 -07:00
2026-06-12 19:27:17 -07:00
2026-05-11 06:47:43 -07:00
2026-06-03 17:57:29 -07:00
2026-06-15 19:44:17 -07:00
2026-06-12 13:50:24 -07:00
2026-06-19 17:25:35 -07:00
2026-05-23 04:18:55 -07:00
2026-05-16 17:31:09 -07:00
2026-05-11 21:48:26 -07:00
2026-05-03 02:02:25 -07:00
2026-05-19 17:27:20 -07:00
2026-04-30 21:20:56 -07:00
2026-04-25 15:25:08 -07:00
2026-05-01 12:25:44 -07:00
2026-06-04 22:53:02 -07:00
2026-04-24 19:39:20 -07:00
2026-05-12 17:04:32 -07:00
2026-05-04 22:17:10 -07:00
2026-05-13 06:29:36 -07:00
2026-05-15 12:51:41 -07:00
2026-05-11 14:02:34 -07:00
2026-05-15 16:19:42 -07:00
2026-06-19 16:47:33 -07:00
2026-04-24 19:39:20 -07:00
2026-05-15 12:02:44 -07:00
2026-05-15 22:56:31 -07:00
2026-05-15 12:02:44 -07:00
2026-05-17 00:21:12 -07:00
2026-05-16 21:00:48 -07:00
2026-05-18 06:05:20 -07:00
2026-06-03 20:42:00 -07:00
2026-05-17 23:29:20 -07:00
2026-05-17 12:58:01 -07:00
2026-05-17 06:23:00 -07:00
2026-04-18 12:21:14 -07:00
2026-06-18 01:27:09 -07:00
2026-06-17 04:51:31 -07:00
2026-06-19 16:47:34 -07:00
2026-06-11 20:53:01 -07:00
2026-06-17 14:52:56 -07:00
2026-06-03 13:02:23 -07:00
2026-05-14 13:16:09 -07:00
2026-05-10 19:13:05 -07:00
2026-05-15 22:56:30 -07:00
2026-05-14 04:32:42 -07:00
2026-05-06 09:43:51 -07:00
2026-05-06 09:43:51 -07:00
2026-05-08 18:26:14 -07:00
2026-06-19 06:04:20 -07:00
2026-06-03 01:10:18 -07:00
2026-05-20 02:46:49 -07:00
2026-05-20 02:47:34 -07:00
2026-05-19 07:26:43 -07:00
2026-05-19 19:23:47 -07:00
2026-05-19 19:23:47 -07:00
2026-05-23 17:07:14 -07:00
2026-05-22 04:09:22 -07:00
2026-04-29 07:58:58 -07:00
2026-05-20 14:29:07 -07:00
2026-05-20 14:29:07 -07:00
2026-05-13 06:29:34 -07:00
2026-06-04 12:26:05 -07:00
2026-05-28 10:46:21 -07:00
2026-06-03 01:10:18 -07:00
2026-06-12 21:50:49 -07:00
2026-05-11 06:47:42 -07:00
2026-05-18 08:45:16 -07:00
2026-06-16 15:08:24 -07:00
2026-05-12 17:04:33 -07:00
2026-06-12 23:57:43 -07:00
2026-06-12 23:57:43 -07:00
2026-05-23 21:54:07 -07:00
2026-05-22 23:42:44 -07:00
2026-04-28 14:25:55 -07:00
2026-05-20 14:29:07 -07:00
2026-05-15 07:50:34 -07:00
2026-05-16 13:04:27 -07:00
2026-05-31 17:23:26 -07:00
2026-05-17 01:08:49 -07:00
2026-05-21 11:08:14 -07:00
2026-05-20 23:02:53 -07:00
2026-06-09 09:41:28 -07:00
2026-05-19 03:54:48 -07:00
2026-05-10 23:36:10 -07:00
2026-06-19 16:47:33 -07:00
2026-05-17 09:51:10 -07:00
2026-06-13 05:06:05 -07:00
2026-05-31 11:55:11 -07:00
2026-06-20 12:46:34 -07:00
2026-05-23 03:05:46 -07:00
2026-06-04 11:33:33 -07:00
2026-06-19 16:47:34 -07:00
2026-06-19 16:47:33 -07:00
2026-05-11 06:47:42 -07:00
2026-05-18 15:50:48 -07:00
2026-06-08 13:54:17 -07:00
2026-05-11 14:56:46 -07:00
2026-05-11 06:47:42 -07:00
2026-06-05 17:26:07 -07:00
2026-05-17 23:21:34 -07:00
2026-05-11 21:48:26 -07:00
2026-05-17 11:39:18 -07:00
2026-05-16 21:46:45 -07:00
2026-05-11 21:48:26 -07:00
2026-05-17 08:24:49 -07:00
2026-05-18 18:07:53 -07:00
2026-06-08 13:32:58 -07:00
2026-05-11 13:25:06 -07:00
2026-04-26 20:56:31 -07:00
2026-05-18 08:02:21 -07:00
2026-05-14 18:35:30 -07:00
2026-05-19 03:10:25 -07:00
2026-06-09 12:50:26 -07:00
2026-05-14 05:55:16 -07:00
2026-05-12 19:10:07 -07:00
2026-05-16 22:19:57 -07:00
2026-06-20 05:53:46 -07:00
2026-06-18 16:58:11 -07:00
2026-06-04 12:26:05 -07:00
2026-06-09 00:01:00 -07:00
2026-06-19 06:51:57 -07:00
2026-05-30 12:58:47 -07:00
2026-06-09 13:37:46 -07:00
2026-05-16 22:19:57 -07:00
2026-05-14 03:49:37 -07:00
2026-05-15 23:28:22 -07:00
2026-06-05 13:56:05 -07:00
2026-04-24 19:39:20 -07:00
2026-05-20 14:29:07 -07:00
2026-06-08 13:32:58 -07:00
2026-05-30 13:53:34 -07:00
2026-06-20 05:53:46 -07:00
2026-06-04 16:16:50 -07:00
2026-05-21 15:45:48 -07:00
2026-05-12 23:04:56 -07:00
2026-05-11 06:47:43 -07:00
2026-06-18 03:24:57 -07:00
2026-06-13 05:06:05 -07:00
2026-04-29 10:22:18 -07:00
2026-06-07 20:15:26 -07:00
2026-05-17 22:57:15 -07:00
2026-05-18 15:01:20 -07:00
2026-06-18 17:52:08 -07:00
2026-06-01 16:03:05 -07:00
2026-06-01 16:03:05 -07:00
2026-06-19 16:47:34 -07:00
2026-04-25 21:43:38 -07:00
2026-06-19 16:47:34 -07:00
2026-06-17 21:45:50 -07:00
2026-06-04 00:19:57 -07:00
2026-06-07 21:19:10 -07:00
2026-06-04 07:14:41 -07:00
2026-06-04 00:19:58 -07:00
2026-04-29 10:22:18 -07:00
2026-06-17 21:45:50 -07:00
2026-05-01 11:55:56 -07:00
2026-05-04 10:18:38 -07:00
2026-06-03 13:33:38 -07:00
2026-06-18 01:20:03 -07:00
2026-06-17 19:19:05 -07:00
2026-05-06 11:51:48 -07:00
2026-06-12 13:36:02 -07:00
2026-06-07 18:51:46 -07:00
2026-06-09 23:43:24 -07:00
2026-06-07 21:19:10 -07:00
2026-06-04 23:35:32 -07:00
2026-06-07 21:19:10 -07:00
2026-06-08 13:32:58 -07:00
2026-06-08 00:19:50 -07:00
2026-06-08 13:54:17 -07:00
2026-06-11 20:53:01 -07:00
2026-06-17 14:56:07 -07:00
2026-06-12 17:57:19 -07:00
2026-06-03 18:54:39 -07:00
2026-06-03 18:51:27 -07:00
2026-06-04 00:54:05 -07:00
2026-06-17 14:52:56 -07:00
2026-06-18 11:01:12 -07:00
2026-06-05 01:16:27 -07:00
2026-06-04 23:23:48 -07:00
2026-06-04 22:12:38 -07:00
2026-06-04 12:03:29 -07:00
2026-06-05 13:56:05 -07:00
2026-05-14 12:30:19 -07:00
2026-06-04 22:18:36 -07:00
2026-06-03 00:12:13 -07:00
2026-05-16 07:16:05 -07:00
2026-06-13 21:17:20 -07:00