Fix clear-data to actually delete run_cache entries

- discard_run now deletes from run_cache and pending_runs tables
- Add delete_run_cache() and delete_pending_run() database functions
- Previously clear-data only cleared Redis, leaving DB cache intact

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
gilesb
2026-01-12 17:42:12 +00:00
parent a0b113923e
commit 5b05dbd31e
2 changed files with 32 additions and 2 deletions

View File

@@ -482,8 +482,18 @@ class RunService:
# Remove task_id mapping from Redis
self.redis.delete(f"{self.task_key_prefix}{run_id}")
# Note: We don't delete from run_cache as that's a permanent record
# of completed work. The content itself remains in cache.
# Remove from run_cache database table
try:
await self.db.delete_run_cache(run_id)
except Exception as e:
import logging
logging.getLogger(__name__).warning(f"Failed to delete run_cache for {run_id}: {e}")
# Remove pending run if exists
try:
await self.db.delete_pending_run(run_id)
except Exception:
pass
return True, None

View File

@@ -1207,6 +1207,26 @@ async def list_runs_by_actor(actor_id: str, offset: int = 0, limit: int = 20) ->
]
async def delete_run_cache(run_id: str) -> bool:
"""Delete a run from the cache."""
async with pool.acquire() as conn:
result = await conn.execute(
"DELETE FROM run_cache WHERE run_id = $1",
run_id
)
return result == "DELETE 1"
async def delete_pending_run(run_id: str) -> bool:
"""Delete a pending run."""
async with pool.acquire() as conn:
result = await conn.execute(
"DELETE FROM pending_runs WHERE run_id = $1",
run_id
)
return result == "DELETE 1"
# ============ Storage Backends ============
async def get_user_storage(actor_id: str) -> List[dict]: