Bug description
The kanban plugin leaks file descriptors. After ~4 days of gateway uptime, the gateway process hits the system FD limit (1024) and crashes with [Errno 24] Too many open files.
Root cause
Every kanban_db.connect() call opens kanban.db but callers in plugins/kanban/dashboard/plugin_api.py never close the connection. Several handlers are missing conn.close() in a finally block:
get_home_channels() — no close ← leak
decompose_task_endpoint() — no close ← leak
- Same pattern likely in kanban CLI tools (
kanban_decompose, kanban_swarm, etc.)
File descriptor evidence
After 4 days uptime:
$ ls -la /proc/<gateway_pid>/fd/ | grep kanban
→ 900+ open FDs to kanban.db and kanban.db-wal
$ lsof -p <gateway_pid> | grep kanban
→ all point to (deleted) kanban.db
Environment
- OS: Ubuntu Linux 6.17
- Hermes: 0.14.x
- Python sqlite3, gateway runs as long-lived daemon
Suggested fix
Audit all plugin_api.py handlers — wrap every _conn() call in try/finally with conn.close(). Consider a context manager:
@contextlib.contextmanager
def _conn_cm(board=None):
conn = _conn(board=board)
try:
yield conn
finally:
conn.close()
Same fix needed in hermes_cli/kanban_decompose.py, kanban_swarm.py, etc.
Bug description
The kanban plugin leaks file descriptors. After ~4 days of gateway uptime, the gateway process hits the system FD limit (1024) and crashes with
[Errno 24] Too many open files.Root cause
Every
kanban_db.connect()call openskanban.dbbut callers inplugins/kanban/dashboard/plugin_api.pynever close the connection. Several handlers are missingconn.close()in afinallyblock:get_home_channels()— no close ← leakdecompose_task_endpoint()— no close ← leakkanban_decompose,kanban_swarm, etc.)File descriptor evidence
After 4 days uptime:
Environment
Suggested fix
Audit all
plugin_api.pyhandlers — wrap every_conn()call intry/finallywithconn.close(). Consider a context manager:Same fix needed in
hermes_cli/kanban_decompose.py,kanban_swarm.py, etc.