Skip to content

OperationalError: disk I/O error #345

Open

Description

@gisce-ti-sentry

Sentry Issue: GAB-12

OperationalError: disk I/O error
(4 additional frame(s) were not displayed)
...
  File "github_agent_bridge/persistence/runtime.py", line 71, in record_worker_heartbeat
    with self.database.transaction(
  File "contextlib.py", line 141, in __enter__
    return next(self.gen)
  File "github_agent_bridge/persistence/database.py", line 111, in transaction
    con = self.read_write()
  File "github_agent_bridge/persistence/database.py", line 70, in read_write
    self._configure(con, read_only=False)
  File "github_agent_bridge/persistence/database.py", line 185, in _configure
    journal_mode = str(con.execute("PRAGMA journal_mode").fetchone()[0]).lower()

This issue was automatically created by Sentry via Github Issue

Activity

  1. giscebot commented on Nov 11, 2026

    @giscebot
    Collaborator

    He obert la PR #348 amb un fix fail-closed: el disk I/O error del heartbeat no es tracta com a contenció ni es reintenta, sinó que ara queda supervisat, atura tot l’executor i deixa que systemd el reiniciï. Abans moria només el thread daemon de heartbeat i el pool podia continuar treballant sense senyal de salut.

    També s’evita que una segona escriptura de heartbeat emmascari l’excepció original del worker. Regressió coberta i suite completa verificada: 714 tests passats.

    PR: #348

    Si l’error d’I/O es repeteix després del deploy, caldrà revisar filesystem/dispositiu: el canvi el conté correctament, però no intenta amagar ni “curar” una fallada física de storage.

  2. giscebot commented on Nov 11, 2026

    @giscebot
    Collaborator

    Revalidació final de la PR #348 contra el main actual:

    • branca 0 commits darrere i 1 davant; estat MERGEABLE/CLEAN al commit 3eadccc;
    • regressió específica: 4 tests passats;
    • suite local completa: 714 tests passats;
    • CI: Python 3.11, Python 3.12 i dashboard, tots verds;
    • diff-check i worktree nets.

    He revisat també el camí de fallada: un error fatal del heartbeat queda registrat al canal supervisat de workers, activa el shutdown global i permet que systemd reiniciï el procés; el tractament existent de contenció SQLite es manté intacte. No cal ampliar el patch.

    Això resol la contenció fail-closed del procés, però no substitueix la recuperació ni la vigilància de capacitat del filesystem, que continua separada a #350.

    PR preparada per revisió i merge: #348

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions