1
0

[loop-cycle-50] refactor: replace bare sqlite3.connect() with context managers batch 2 (#157) (#180)

This commit is contained in:
2026-03-15 11:58:43 -04:00
parent bea2749158
commit bcd6d7e321
16 changed files with 512 additions and 510 deletions

View File

@@ -9,8 +9,8 @@ import asyncio
import json
import logging
import sqlite3
from collections.abc import Callable, Coroutine
from contextlib import closing
from collections.abc import Callable, Coroutine, Generator
from contextlib import closing, contextmanager
from dataclasses import dataclass, field
from datetime import UTC, datetime
from pathlib import Path
@@ -106,22 +106,23 @@ class EventBus:
conn.executescript(_EVENTS_SCHEMA)
conn.commit()
def _get_persistence_conn(self) -> sqlite3.Connection | None:
@contextmanager
def _get_persistence_conn(self) -> Generator[sqlite3.Connection | None, None, None]:
"""Get a connection to the persistence database."""
if self._persistence_db_path is None:
return None
conn = sqlite3.connect(str(self._persistence_db_path))
conn.row_factory = sqlite3.Row
conn.execute("PRAGMA busy_timeout=5000")
return conn
yield None
return
with closing(sqlite3.connect(str(self._persistence_db_path))) as conn:
conn.row_factory = sqlite3.Row
conn.execute("PRAGMA busy_timeout=5000")
yield conn
def _persist_event(self, event: Event) -> None:
"""Write an event to the persistence database."""
conn = self._get_persistence_conn()
if conn is None:
return
try:
with closing(conn):
with self._get_persistence_conn() as conn:
if conn is None:
return
try:
task_id = event.data.get("task_id", "")
agent_id = event.data.get("agent_id", "")
conn.execute(
@@ -139,8 +140,8 @@ class EventBus:
),
)
conn.commit()
except Exception as exc:
logger.debug("Failed to persist event: %s", exc)
except Exception as exc:
logger.debug("Failed to persist event: %s", exc)
# ── Replay ───────────────────────────────────────────────────────────
@@ -162,12 +163,11 @@ class EventBus:
Returns:
List of Event objects from persistent storage.
"""
conn = self._get_persistence_conn()
if conn is None:
return []
with self._get_persistence_conn() as conn:
if conn is None:
return []
try:
with closing(conn):
try:
conditions = []
params: list = []
@@ -197,9 +197,9 @@ class EventBus:
)
for row in rows
]
except Exception as exc:
logger.debug("Failed to replay events: %s", exc)
return []
except Exception as exc:
logger.debug("Failed to replay events: %s", exc)
return []
# ── Subscribe / Publish ──────────────────────────────────────────────