Skip to content

[Bug] Kanban plugin: kanban.db file descriptor leak — gateway crashes after ~4 days #33159

@kenshinsee

Description

@kenshinsee

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low — cosmetic, nice to havecomp/gatewayGateway runner, session dispatch, deliverycomp/pluginsPlugin system and bundled pluginstype/bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions