teknium1
939a2f64b4
fix: long-lived processes stop minting duplicate state.db writer handles
...
Gateway, dashboard, ACP server and the CLI already hold one registry-shared
SessionDB per state.db path, yet several in-process call paths still opened
a bare SessionDB() beside it. Each one is a full writer: schema init, write
lock, token-writer thread and a close-time WAL checkpoint. On a dashboard
serving overlapping requests that stacked up to the "5 live SessionDB
handles" precursor within seconds; per #110544 they are now harmless to each
other's WAL generation, but the leak itself remained.
Pure readers attach read_only=True (no writer connection, no write lock):
- plugins/hermes-achievements/dashboard/plugin_api.py::scan_sessions
(dashboard, per background scan and per /rescan; highest-frequency site)
- hermes_cli/console_engine.py::_session_db (dashboard console; list,
stats and export are reads; rename/optimize opt in to a writer)
- tools/process_registry_results.py::_owns_result (gateway, per retained
result load)
- hermes_cli/main.py::_session_db (last-session / title / cwd lookups)
- hermes_cli/terminal_breadcrumbs.py, hermes_cli/status.py,
hermes_cli/main_tui_launch.py (lookup one-shots)
Writers share the process's registry handle (hermes_state_registry.acquire;
close()/release_or_close release one refcount):
- acp_adapter/session.py::SessionManager._get_db — the AIAgent it builds
acquires the same path, so the ACP server held two writers per process
- hermes_cli/kanban_db_dispatch.py::_retag_legacy_worker_sessions
(gateway dispatcher tick)
- hermes_cli/main.py::_create_titled_session, hermes_cli/oneshot.py,
hermes_cli/foreign_sessions.py — the CLI acquires the same handle a
moment later
The "N live SessionDB handles" warning now counts only writable members:
read-only attaches are the sanctioned per-request shape for dashboard
routers and CLI lookups, and counting them turned a healthy topology into
an operator alarm (#100896 field reports of restart loops keyed on it).
Live repro (one registry writer + 4 overlapping dashboard/gateway paths in
one process): before 5 writable opens, 5 live handles, warning fired;
after 1 writable open (the registry handle), 0 from the request paths,
no warning.
Refs #100896 #103339
2026-09-14 08:10:36 -07:00
..
2026-09-13 09:40:44 -07:00
2026-09-13 05:07:11 -07:00
2026-09-13 05:09:43 -07:00
2026-09-03 03:31:03 -07:00
2026-09-13 21:30:02 -07:00
2026-09-14 05:56:29 -07:00
2026-09-12 08:25:54 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 15:07:39 -07:00
2026-09-07 08:06:48 -07:00
2026-09-03 15:07:39 -07:00
2026-09-03 02:46:19 -07:00
2026-09-07 06:13:16 -07:00
2026-09-11 19:01:47 -07:00
2026-09-13 05:07:11 -07:00
2026-09-12 08:25:54 -07:00
2026-09-02 21:00:34 -07:00
2026-09-13 14:48:09 -07:00
2026-09-13 05:09:43 -07:00
2026-09-11 03:45:33 +05:30
2026-09-11 03:45:33 +05:30
2026-09-03 13:49:57 -07:00
2026-09-02 20:56:23 -07:00
2026-09-03 13:49:57 -07:00
2026-09-05 18:08:00 +05:30
2026-09-02 22:51:30 -07:00
2026-09-14 20:38:07 +05:30
2026-09-12 22:07:41 -07:00
2026-09-12 22:07:41 -07:00
2026-09-12 22:07:41 -07:00
2026-09-03 13:08:40 -07:00
2026-09-03 13:48:49 -07:00
2026-09-13 05:07:11 -07:00
2026-09-09 21:17:35 +05:30
2026-09-12 22:07:41 -07:00
2026-09-13 05:07:11 -07:00
2026-09-12 22:07:41 -07:00
2026-09-03 13:08:40 -07:00
2026-09-02 21:59:38 -07:00
2026-09-14 20:38:07 +05:30
2026-09-02 20:34:28 -07:00
2026-09-13 05:07:11 -07:00
2026-09-03 02:07:33 -07:00
2026-09-13 20:57:03 -07:00
2026-09-02 21:26:16 -07:00
2026-09-08 05:10:57 -07:00
2026-09-02 23:58:31 -07:00
2026-09-02 23:58:31 -07:00
2026-09-08 03:06:30 -07:00
2026-09-04 00:15:16 -07:00
2026-09-12 08:25:54 -07:00
2026-09-13 14:35:32 -07:00
2026-09-12 08:25:54 -07:00
2026-09-13 14:35:32 -07:00
2026-09-13 05:21:02 -07:00
2026-09-14 05:28:46 -07:00
2026-09-13 20:41:41 -07:00
2026-09-13 05:21:02 -07:00
2026-09-13 20:54:50 -07:00
2026-09-02 21:23:44 -07:00
2026-09-13 14:35:32 -07:00
2026-09-13 05:21:02 -07:00
2026-09-12 22:00:02 -07:00
2026-09-13 14:35:32 -07:00
2026-09-08 13:39:17 -07:00
2026-09-08 13:39:17 -07:00
2026-09-13 16:43:50 -07:00
2026-09-03 13:30:31 -07:00
2026-09-02 23:58:31 -07:00
2026-09-13 20:50:10 -07:00
2026-09-13 05:07:11 -07:00
2026-09-02 21:03:13 -07:00
2026-09-02 15:03:42 -07:00
2026-09-11 11:54:49 -07:00
2026-09-12 08:25:36 -07:00
2026-09-13 20:41:41 -07:00
2026-09-03 00:06:54 -07:00
2026-09-12 16:17:04 -07:00
2026-09-14 05:25:01 -07:00
2026-09-13 05:09:06 -07:00
2026-09-07 04:46:37 -07:00
2026-09-12 05:56:15 -07:00
2026-09-10 01:08:18 -07:00
2026-09-13 05:07:50 -07:00
2026-09-14 08:10:36 -07:00
2026-09-03 09:44:26 -07:00
2026-09-02 20:47:14 -07:00
2026-09-13 05:07:11 -07:00
2026-09-13 05:09:06 -07:00
2026-09-12 20:57:21 -07:00
2026-09-12 05:56:15 -07:00
2026-09-05 16:45:59 +05:30
2026-09-13 05:21:02 -07:00
2026-09-03 00:04:40 -07:00
2026-09-13 05:07:11 -07:00
2026-09-13 09:18:02 -07:00
2026-09-03 14:16:54 -07:00
2026-09-10 01:25:45 -07:00
2026-09-03 00:06:30 -07:00
2026-09-04 00:15:16 -07:00
2026-09-04 01:28:31 -07:00
2026-09-03 13:16:47 -07:00
2026-09-13 05:09:06 -07:00
2026-09-03 13:29:35 -07:00
2026-09-03 00:05:41 -07:00
2026-09-13 20:56:26 -07:00
2026-09-12 08:24:11 -07:00
2026-09-04 01:28:31 -07:00
2026-09-04 07:17:00 -07:00
2026-09-13 14:41:26 -07:00
2026-09-06 05:41:46 -07:00
2026-09-13 20:51:06 -07:00
2026-09-03 17:13:22 -07:00
2026-09-12 21:39:10 -07:00
2026-09-14 08:10:36 -07:00
2026-09-11 03:45:33 +05:30
2026-09-02 20:40:51 -07:00
2026-09-13 14:48:09 -07:00
2026-09-13 15:41:01 -07:00
2026-09-13 15:41:01 -07:00
2026-09-14 19:47:09 +05:30
2026-09-13 15:41:01 -07:00
2026-09-10 01:00:19 -07:00
2026-09-12 15:00:37 +05:30
2026-09-07 00:51:41 -07:00
2026-09-13 15:41:01 -07:00
2026-09-03 00:06:30 -07:00
2026-09-06 07:20:24 -07:00
2026-09-02 20:06:17 -07:00
2026-09-03 00:06:30 -07:00
2026-09-02 21:20:42 -07:00
2026-09-03 00:06:30 -07:00
2026-09-13 05:07:11 -07:00
2026-09-11 03:45:32 +05:30
2026-09-03 17:13:22 -07:00
2026-09-03 13:48:14 -07:00
2026-09-13 05:08:29 -07:00
2026-09-14 08:10:36 -07:00
2026-09-07 14:16:57 -07:00
2026-09-07 14:16:57 -07:00
2026-09-03 13:48:14 -07:00
2026-09-13 14:37:17 -07:00
2026-09-13 05:09:06 -07:00
2026-09-03 17:13:22 -07:00
2026-09-07 06:04:06 -07:00
2026-09-07 04:46:54 -07:00
2026-09-13 06:06:46 -07:00
2026-09-07 04:46:54 -07:00
2026-09-07 04:46:54 -07:00
2026-09-13 05:09:43 -07:00
2026-09-09 12:18:58 -07:00
2026-09-03 13:48:14 -07:00
2026-09-09 12:18:58 -07:00
2026-09-02 20:12:36 -07:00
2026-09-07 04:55:17 -07:00
2026-09-02 20:15:37 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 09:44:26 -07:00
2026-09-14 05:28:46 -07:00
2026-09-07 05:56:50 -07:00
2026-09-09 10:28:52 -07:00
2026-09-12 08:47:21 -07:00
2026-09-12 08:25:54 -07:00
2026-09-13 16:43:50 -07:00
2026-09-14 08:10:36 -07:00
2026-09-03 15:07:39 -07:00
2026-09-14 08:10:36 -07:00
2026-09-13 05:07:50 -07:00
2026-09-05 15:02:53 +02:00
2026-09-12 08:34:43 -07:00
2026-09-12 20:49:18 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 17:13:22 -07:00
2026-09-11 19:50:46 -07:00
2026-09-02 21:44:59 -07:00
2026-09-02 20:50:08 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 17:13:22 -07:00
2026-09-02 21:44:59 -07:00
2026-09-03 09:44:26 -07:00
2026-09-07 06:15:43 -07:00
2026-09-13 05:07:11 -07:00
2026-09-02 20:51:30 -07:00
2026-09-03 03:31:03 -07:00
2026-09-10 04:22:38 -07:00
2026-09-02 20:51:30 -07:00
2026-09-13 20:54:50 -07:00
2026-09-02 21:54:56 -07:00
2026-09-02 21:54:56 -07:00
2026-09-03 15:07:39 -07:00
2026-09-12 05:10:51 -07:00
2026-09-13 16:43:50 -07:00
2026-09-11 03:45:32 +05:30
2026-09-13 16:43:50 -07:00
2026-09-13 21:06:39 -07:00
2026-09-10 09:11:00 -07:00
2026-09-07 08:08:04 -07:00
2026-09-03 13:48:49 -07:00
2026-09-12 01:35:05 -07:00
2026-09-12 01:35:05 -07:00
2026-09-12 14:05:36 -07:00
2026-09-13 21:07:35 -07:00
2026-09-11 03:45:33 +05:30
2026-09-11 03:45:31 +05:30
2026-09-10 18:11:25 -07:00
2026-09-04 07:17:00 -07:00
2026-09-03 09:44:26 -07:00
2026-09-04 00:15:16 -07:00
2026-09-14 08:10:36 -07:00
2026-09-03 09:44:26 -07:00
2026-09-02 20:40:15 -07:00
2026-09-12 08:24:26 -07:00
2026-09-02 20:40:15 -07:00
2026-09-03 17:13:22 -07:00
2026-09-02 20:19:57 -07:00
2026-09-02 21:57:39 -07:00
2026-09-09 04:38:01 -07:00
2026-09-13 05:07:11 -07:00
2026-09-03 14:00:59 -07:00
2026-09-09 04:38:01 -07:00
2026-09-12 07:57:13 -07:00
2026-09-09 04:38:01 -07:00
2026-09-10 05:09:15 -07:00
2026-09-03 00:09:39 -07:00
2026-09-12 08:26:48 -07:00
2026-09-06 13:36:12 -07:00
2026-09-09 04:38:01 -07:00
2026-09-09 04:38:01 -07:00
2026-09-03 09:44:26 -07:00
2026-09-13 05:07:11 -07:00
2026-09-11 03:45:31 +05:30
2026-09-12 08:27:53 -07:00
2026-09-13 14:33:11 -07:00
2026-09-13 14:33:11 -07:00
2026-09-06 05:34:01 -07:00
2026-09-10 01:00:19 -07:00
2026-09-13 15:45:57 -07:00
2026-09-03 00:06:57 -07:00
2026-09-13 05:08:29 -07:00
2026-09-02 21:07:16 -07:00
2026-09-02 21:07:16 -07:00
2026-09-02 22:55:15 -07:00
2026-09-10 14:56:55 -04:00
2026-09-13 05:07:50 -07:00
2026-09-13 05:07:11 -07:00
2026-09-07 02:09:34 -07:00
2026-09-04 20:24:24 -04:00
2026-09-09 11:31:10 -07:00
2026-09-14 19:49:12 +05:30
2026-09-02 20:47:24 -07:00
2026-09-02 21:00:55 -07:00
2026-09-02 22:39:49 -07:00
2026-09-13 05:07:50 -07:00
2026-09-13 05:07:50 -07:00
2026-09-13 05:07:50 -07:00
2026-09-02 22:25:24 -07:00
2026-09-03 14:00:59 -07:00
2026-09-03 17:13:22 -07:00
2026-09-02 21:07:16 -07:00
2026-09-02 21:07:16 -07:00
2026-09-13 05:09:06 -07:00
2026-09-03 09:44:26 -07:00
2026-09-11 06:24:54 -07:00
2026-09-11 06:24:54 -07:00
2026-09-11 06:24:54 -07:00
2026-09-11 06:24:54 -07:00
2026-09-03 00:06:57 -07:00
2026-09-13 05:21:02 -07:00
2026-09-02 23:59:27 -07:00
2026-09-11 06:37:27 -07:00
2026-09-09 13:30:28 -07:00
2026-09-11 06:24:54 -07:00
2026-09-13 14:45:10 -07:00
2026-09-02 22:39:06 -07:00
2026-09-03 13:33:10 -07:00
2026-09-13 05:32:38 -07:00
2026-09-12 08:25:54 -07:00
2026-09-04 07:17:00 -07:00
2026-09-03 13:33:10 -07:00
2026-09-03 13:33:10 -07:00
2026-09-12 08:25:54 -07:00
2026-09-12 08:25:54 -07:00
2026-09-07 22:25:12 -07:00
2026-09-02 20:43:25 -07:00
2026-09-03 13:08:40 -07:00
2026-09-12 05:10:31 -07:00
2026-09-03 09:44:26 -07:00
2026-09-12 08:25:54 -07:00
2026-09-03 17:13:22 -07:00
2026-09-02 23:04:20 -07:00
2026-09-02 20:59:41 -07:00
2026-09-03 17:13:22 -07:00
2026-09-13 05:08:29 -07:00
2026-09-11 03:45:31 +05:30
2026-09-12 21:47:53 -07:00
2026-09-13 05:21:02 -07:00
2026-09-14 08:10:36 -07:00
2026-09-02 20:43:25 -07:00
2026-09-02 21:36:24 -07:00
2026-09-02 21:34:25 -07:00
2026-09-03 22:00:01 -07:00
2026-09-14 08:10:36 -07:00
2026-09-02 20:43:25 -07:00
2026-09-11 06:24:54 -07:00
2026-09-02 20:43:25 -07:00
2026-09-08 19:52:26 +05:30
2026-09-03 13:22:51 -07:00
2026-09-12 08:34:43 -07:00
2026-09-03 14:16:54 -07:00
2026-09-03 13:10:38 -07:00
2026-09-13 05:07:50 -07:00
2026-09-02 20:38:18 -07:00
2026-09-02 21:31:17 -07:00
2026-09-12 08:25:54 -07:00
2026-09-03 09:44:26 -07:00
2026-09-02 16:34:55 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 14:27:29 -07:00
2026-09-13 05:08:20 -07:00
2026-09-13 05:08:20 -07:00
2026-09-03 09:44:26 -07:00
2026-09-05 00:24:40 -07:00
2026-09-03 09:44:26 -07:00
2026-09-14 19:47:09 +05:30
2026-09-03 09:44:26 -07:00
2026-09-13 14:44:38 -07:00
2026-09-02 21:49:26 -07:00
2026-09-13 15:41:01 -07:00
2026-09-02 21:45:19 -07:00
2026-09-06 14:53:33 +05:30
2026-09-02 22:12:58 -07:00
2026-09-02 21:28:23 -07:00
2026-09-10 11:48:01 -07:00
2026-09-02 21:28:23 -07:00
2026-09-02 21:28:23 -07:00
2026-09-03 13:20:22 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 09:44:26 -07:00
2026-09-13 19:19:32 -07:00
2026-09-09 21:16:40 +05:30
2026-09-04 20:24:24 -04:00
2026-09-13 19:19:32 -07:00
2026-09-13 05:07:50 -07:00
2026-09-09 04:38:01 -07:00
2026-09-07 07:11:36 -07:00
2026-09-12 06:13:44 -07:00
2026-09-11 15:28:37 -07:00
2026-09-14 08:10:36 -07:00
2026-09-03 14:21:32 -07:00
2026-09-03 14:21:32 -07:00
2026-09-12 18:35:21 -07:00
2026-09-11 03:45:33 +05:30
2026-09-07 05:56:33 -07:00
2026-09-11 06:37:27 -07:00
2026-09-11 19:50:46 -07:00
2026-09-13 21:30:02 -07:00
2026-09-04 20:24:24 -04:00
2026-09-02 23:08:44 -07:00
2026-09-13 20:55:29 -07:00
2026-09-13 20:55:29 -07:00
2026-09-13 05:07:11 -07:00
2026-09-02 21:54:36 -07:00
2026-09-09 02:36:00 -07:00