Skip to content

OperationalError: disk I/O error #346

Closed as not planned
Closed as not planned

Description

@gisce-ti-sentry

Sentry Issue: GAB-13

OperationalError: disk I/O error
(2 additional frame(s) were not displayed)
...
  File "github_agent_bridge/persistence/runtime.py", line 161, in mark_process_exited
    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()

OperationalError: disk I/O error
(5 additional frame(s) were not displayed)
...
  File "github_agent_bridge/persistence/jobs.py", line 194, in finish
    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()

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

    Diagnòstic completat: aquest error és un símptoma duplicat del mateix incident de filesystem ple que #344, no un defecte independent de mark_process_exited, finish o PRAGMA journal_mode.

    El journal de producció mostra la seqüència exacta a les 17:12:28 CET:

    1. primer fallen diversos commits amb sqlite3.OperationalError: database or disk is full;
    2. un segon després, les noves connexions i les lectures fallen amb disk I/O error;
    3. systemd reinicia el procés quan torna a haver-hi espai.

    No afegeixo un tercer patch aquí perquè capturar aquests errors en cada repositori amagaria una pèrdua de durabilitat. Les dues correccions útils i no solapades són:

    Totes dues PR tenen la suite verda en Python 3.11, Python 3.12 i dashboard.

    Estat operatiu comprovat després de la recuperació: executor, webhook i dashboard actius; base de dades llegible (9.859 jobs); cap nou database or disk is full ni disk I/O error al servei des de les 17:13. El filesystem encara està al 92% amb 13 GiB lliures, així que cal mantenir la recuperació de capacitat com a acció operativa; #349 aporta detecció preventiva, no neteja automàtica.

    Tanco #346 com a duplicat de #344.

  2. giscebot commented on Nov 11, 2026

    @giscebot
    Collaborator

    Correcció de seguiment: la PR preventiva consolidada és #350, que substitueix la implementació inicial solapada #349 (ja tancada). #348 continua sent el fix fail-closed que supervisa els errors fatals del heartbeat i atura l’executor perquè systemd el reiniciï.

    #348 i #350 són mergeables i tenen CI verd en Python 3.11, Python 3.12 i dashboard. #346 es manté tancat com a duplicat simptomàtic de #344; la recuperació de capacitat i la finestra d’observació operativa continuen controlades allà.

  3. giscebot commented on Nov 11, 2026

    @giscebot
    Collaborator

    Actualització d’estat: no cal cap patch addicional en aquest issue, que continua correctament tancat com a símptoma duplicat de #344.

    La PR #350 ha rebut després l’enfortiment de regressió 88a3ab5, que comprova que la sonda de capacitat mesura el filesystem del pare resolt de la base SQLite. Per tant, l’afirmació anterior que #350 tenia el CI verd ja no és vigent per al HEAD actual: la nova execució encara és a la cua: https://github.com/gisce/github-agent-bridge/actions/runs/43096761102

    La PR #348 es manté mergeable amb els tres checks verds. La recuperació d’espai i la finestra d’observació operativa continuen seguits a #344.

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