mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-06-03 07:21:54 +00:00
fix(kanban): clear _INITIALIZED_PATHS in remove_board so recycled DBs re-init schema
Archiving or deleting a board via remove_board() leaves the path's
"schema already initialized" entry in the module-level cache. A
concurrent connect(board=<slug>) call (e.g. the dashboard event-stream
poll loop) then:
1. resolves the same kanban.db path,
2. recreates the directory + an empty sqlite file because
connect() does mkdir(parents=True, exist_ok=True),
3. skips the CREATE TABLE pass because the cache entry says the
schema is already in place,
4. errors on the next read with `no such table: task_events`.
Drop the cache entry before mutating the filesystem so the fresh file
gets a proper schema init on next connect(). Applies to both
archive=True (rename) and archive=False (rmtree) branches.
Fixes #23833.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
028bbc5425
commit
d62964cdfa
2 changed files with 36 additions and 0 deletions
|
|
@ -534,6 +534,11 @@ def remove_board(slug: str, *, archive: bool = True) -> dict:
|
|||
if get_current_board() == normed:
|
||||
clear_current_board()
|
||||
|
||||
# A concurrent connect(board=normed) after the rename/delete recreates
|
||||
# an empty sqlite file via mkdir(exist_ok=True); the cache entry must be
|
||||
# dropped first so the schema init pass re-runs on that fresh file.
|
||||
_INITIALIZED_PATHS.discard(str((d / "kanban.db").resolve()))
|
||||
|
||||
if archive:
|
||||
archive_root = boards_root() / "_archived"
|
||||
archive_root.mkdir(parents=True, exist_ok=True)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue