You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
OperationalError: database is locked
File "threading.py", line 1024, in run
self._target(*self._args, **self._kwargs)
File "github_agent_bridge/dispatch.py", line 795, in read_stream
activity_callback(event_type, "OpenClaw CLI output" if event_type == "openclaw_stdout" else "OpenClaw CLI error output", chunk.rstrip("\n"))
File "github_agent_bridge/executor.py", line 345, in <lambda>
activity_callback=lambda event_type, summary, detail: self.queue.add_session_event(job.id, event_type, summary, redact_event_detail(detail)),
File "github_agent_bridge/queue.py", line 920, in add_session_event
This issue was automatically created by Sentry via Github Issue
La causa era que els fils que drenen stdout i stderr persistien cada chunk de manera síncrona. Un SQLITE_BUSY/SQLITE_LOCKED matava el fil lector i podia acabar bloquejant el subprocess quan s'omplia el pipe.
La PR desacobla drenatge i persistència: els lectors encolen l'activitat, un únic fil la persisteix i només reintenta contenció SQLite. Els errors d'esquema o d'emmagatzematge continuen propagant-se al worker. Les regressions inclouen un lock SQLite real i un subprocess que escriu 1 MiB mentre la persistència està bloquejada.
Seguiment final: la correcció s’ha fusionat a main via PR #289, merge commit 3f1f6a7.
La review bloquejant sobre descriptors heretats es va resoldre a 2c090bb; el drenatge posterior a la sortida queda acotat i la persistència només reintenta contenció SQLite transitòria. Validació final: 529 tests locals i checks de dashboard/Python 3.11/Python 3.12 verds.
Aquest event correspon al tancament de la issue després del merge, per tant no cal cap canvi addicional ni una segona PR.
Activity
giscebot commentedon Oct 8, 2026
Fix obert a #289.
La causa era que els fils que drenen
stdoutistderrpersistien cada chunk de manera síncrona. UnSQLITE_BUSY/SQLITE_LOCKEDmatava el fil lector i podia acabar bloquejant el subprocess quan s'omplia el pipe.La PR desacobla drenatge i persistència: els lectors encolen l'activitat, un únic fil la persisteix i només reintenta contenció SQLite. Els errors d'esquema o d'emmagatzematge continuen propagant-se al worker. Les regressions inclouen un lock SQLite real i un subprocess que escriu 1 MiB mentre la persistència està bloquejada.
Validació: 528 tests passats.
giscebot commentedon Oct 8, 2026
Seguiment final: la correcció s’ha fusionat a
mainvia PR #289, merge commit3f1f6a7.La review bloquejant sobre descriptors heretats es va resoldre a
2c090bb; el drenatge posterior a la sortida queda acotat i la persistència només reintenta contenció SQLite transitòria. Validació final: 529 tests locals i checks de dashboard/Python 3.11/Python 3.12 verds.Aquest event correspon al tancament de la issue després del merge, per tant no cal cap canvi addicional ni una segona PR.