diff --git a/gateway/delivery_ledger.py b/gateway/delivery_ledger.py index 675ce4e4fa..d83738bc74 100644 --- a/gateway/delivery_ledger.py +++ b/gateway/delivery_ledger.py @@ -523,15 +523,6 @@ def _prune_unlocked(conn, now: float) -> None: LIMIT ?)""", (total - _MAX_ROWS,)) -def _prune(now: Optional[float] = None) -> None: - now = now if now is not None else time.time() - try: - with _transaction() as conn: - _prune_unlocked(conn, now) - except Exception: - logger.debug("delivery ledger prune failed", exc_info=True) - - def ledger_enabled(config: Optional[Dict[str, Any]] = None) -> bool: """Read the ``gateway.delivery_ledger`` config gate (default on).""" try: diff --git a/tests/gateway/test_delivery_ledger.py b/tests/gateway/test_delivery_ledger.py index f07b9da7eb..316a649b26 100644 --- a/tests/gateway/test_delivery_ledger.py +++ b/tests/gateway/test_delivery_ledger.py @@ -376,7 +376,9 @@ class TestPrune: "UPDATE delivery_obligations SET updated_at=? WHERE obligation_id=?", (time.time() - dl._RETENTION_SECONDS - 60, "ob-1"), ) - dl._prune() + # Prune has no wrapper of its own: it runs inside a writer's transaction, lock held. + with dl._DB_LOCK, dl._transaction() as conn: + dl._prune_unlocked(conn, time.time()) assert _row("ob-1") is None