Totoro-qaq
d93f72c460
fix(sessions): retire lost-generation writers unclosed where the close-time checkpoint cannot be switched off
...
With the retired generation captured durably, closing a lost-generation
handle is safe wherever SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE took effect: the
frames are preserved and sqlite3_close no longer checkpoints them into the
newer generation. On Python 3.11, where sqlite3 has no setconfig, closing
still runs SQLite's internal checkpoint over the newer main file, so only
there the exact quarantined connection is retained instead of closed: one
public Py_IncRef reference via ctypes.pythonapi (no struct-layout access),
bound before the writer opens, taken in close() after the capture. Runtimes
with setconfig never touch ctypes; a writable SessionDB requires CPython
with ctypes only where retention is the sole guard.
Read-only handles and every other quarantine reason close as before.
Regressions cover both branches: where retention applies, the retired inode
stays readable after close() and GC and an independent deleted WAL under
the same pathname is untouched; elsewhere the capture is the surviving copy.
A separate process's newer generation survives close, GC and normal exit
in both cases. The mock-based close-time regression originally written for
Refs #105670
Co-authored-by: fangliquanflq <fangliquan@qq.com >
2026-09-11 11:14:56 +05:30
..
2026-09-07 04:46:04 -07:00
2026-09-10 03:58:37 -07:00
2026-09-10 18:11:25 -07:00
2026-09-06 07:19:21 -07:00
2026-09-11 03:45:33 +05:30
2026-09-03 13:22:51 -07:00
2026-09-10 18:13:16 -07:00
2026-09-03 14:21:52 -07:00
2026-09-03 17:28:02 -07:00
2026-09-07 22:47:33 +05:30
2026-09-03 23:55:56 -07:00
2026-08-31 01:04:11 -07:00
2026-09-11 14:02:08 +10:00
2026-09-11 11:08:11 +05:30
2026-09-11 11:14:56 +05:30
2026-09-10 10:45:57 -07:00
2026-09-07 10:24:17 +02:00
2026-09-04 00:53:42 -07:00
2026-09-03 13:38:36 -07:00
2026-09-03 13:29:35 -07:00
2026-09-01 14:11:55 +05:30
2026-09-10 10:45:57 -07:00
2026-09-07 06:06:46 -07:00
2026-09-03 13:38:36 -07:00
2026-09-10 18:08:16 -07:00
2026-09-09 04:15:27 -07:00
2026-09-02 10:33:43 -07:00
2026-09-08 13:39:01 -07:00
2026-09-09 09:19:57 -07:00
2026-09-10 18:17:22 -07:00
2026-09-11 03:45:33 +05:30
2026-09-09 02:35:41 -07:00
2026-09-09 04:38:01 -07:00
2026-09-09 13:30:28 -07:00
2026-09-01 09:28:01 -07:00
2026-09-03 13:28:22 -07:00
2026-08-31 09:56:43 -07:00
2026-08-31 12:36:33 -07:00
2026-09-07 22:47:33 +05:30
2026-09-10 11:48:01 -07:00
2026-09-02 19:20:44 -07:00
2026-09-03 14:21:52 -07:00
2026-09-02 13:29:46 -07:00
2026-09-06 22:45:31 +05:30
2026-09-03 13:29:55 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 13:46:50 -07:00
2026-09-03 13:28:22 -07:00
2026-09-02 19:53:29 -07:00
2026-09-07 06:09:56 -07:00
2026-09-01 08:36:03 -07:00
2026-09-08 17:13:48 -07:00
2026-09-02 00:44:19 -07:00
2026-09-08 17:13:48 -07:00
2026-08-31 10:05:13 -07:00
2026-09-06 07:19:21 -07:00
2026-08-28 05:45:00 -07:00
2026-09-05 02:31:06 -07:00
2026-08-28 12:20:40 -07:00
2026-09-10 18:13:16 -07:00
2026-09-03 13:12:50 -07:00
2026-09-02 15:03:42 -07:00
2026-09-03 13:46:50 -07:00
2026-09-03 05:03:04 +05:30
2026-08-31 09:56:43 -07:00
2026-09-11 10:30:29 +10:00
2026-09-02 15:03:42 -07:00
2026-09-03 13:46:50 -07:00
2026-09-08 02:27:24 +05:30
2026-09-03 02:06:56 +05:30
2026-09-02 15:03:42 -07:00
2026-09-03 16:35:01 -07:00
2026-08-31 09:56:04 -07:00
2026-09-09 18:26:15 +05:30
2026-09-09 10:52:21 -07:00
2026-09-03 13:16:47 -07:00
2026-09-10 10:45:57 -07:00
2026-08-31 10:00:38 -07:00
2026-09-02 17:26:25 -04:00
2026-09-01 09:28:01 -07:00
2026-09-01 09:28:01 -07:00
2026-09-01 09:28:01 -07:00
2026-08-31 10:00:55 -07:00
2026-08-31 10:53:18 -07:00
2026-08-31 10:53:18 -07:00
2026-09-01 11:25:10 -07:00
2026-08-28 12:36:15 -07:00
2026-09-09 18:26:15 +05:30
2026-09-03 13:46:50 -07:00
2026-09-03 15:07:39 -07:00
2026-09-09 09:19:54 -07:00
2026-09-09 13:30:28 -07:00
2026-09-02 17:07:24 -07:00
2026-09-03 13:46:50 -07:00
2026-09-03 13:48:49 -07:00
2026-09-10 02:21:16 +05:30
2026-09-03 13:28:22 -07:00
2026-08-31 10:03:34 -07:00
2026-09-03 17:45:53 -07:00
2026-09-04 04:56:11 -07:00
2026-09-04 01:28:31 -07:00
2026-09-04 20:24:24 -04:00
2026-09-09 11:31:10 -07:00
2026-09-03 19:33:28 -07:00
2026-09-03 14:21:52 -07:00
2026-08-31 05:56:18 -07:00
2026-09-03 13:46:50 -07:00
2026-08-31 09:56:04 -07:00
2026-09-03 14:21:52 -07:00
2026-09-07 06:04:23 -07:00
2026-09-03 13:46:50 -07:00
2026-09-02 07:26:52 -07:00
2026-09-03 13:46:50 -07:00
2026-09-09 18:26:15 +05:30
2026-09-03 13:46:50 -07:00
2026-09-03 13:46:50 -07:00
2026-09-03 13:46:50 -07:00
2026-09-03 13:46:50 -07:00
2026-09-03 13:46:50 -07:00
2026-09-03 13:46:50 -07:00
2026-09-09 09:19:57 -07:00
2026-09-03 16:35:01 -07:00
2026-09-03 13:46:50 -07:00
2026-08-31 09:58:40 -07:00
2026-09-05 12:21:21 +05:30
2026-09-05 17:00:18 -07:00
2026-09-09 12:20:38 -07:00
2026-09-10 10:27:07 -07:00
2026-09-11 03:45:33 +05:30
2026-09-03 14:21:52 -07:00
2026-09-03 14:21:52 -07:00
2026-09-07 08:23:08 -07:00
2026-09-03 13:12:50 -07:00
2026-09-03 13:12:50 -07:00
2026-09-03 13:12:50 -07:00
2026-09-09 18:25:11 +05:30