fix: reconcile and expose failed product cleanup

This commit is contained in:
2026-09-12 15:24:41 +08:00
parent bd78eef161
commit 21ad6fbf8d
6 changed files with 176 additions and 6 deletions
+3
View File
@@ -27,6 +27,7 @@ class TemporaryJob(BaseModel):
class CleanupReport(BaseModel):
temporary_jobs: list[TemporaryJob] = Field(default_factory=list)
pending_products: list[ProductRecord] = Field(default_factory=list)
failed_products: list[ProductRecord] = Field(default_factory=list)
reclaimable_bytes: int = 0
reminder_job_ids: list[str] = Field(default_factory=list)
deleted_job_ids: list[str] = Field(default_factory=list)
@@ -70,6 +71,7 @@ class CleanupService:
def preview(self, now: datetime) -> CleanupReport:
now_utc = _as_utc(now)
self.product_store.reconcile_stalled_purges(now_utc)
protected = self.archive_protected_job_ids()
temporary_jobs: list[TemporaryJob] = []
reminder_job_ids: list[str] = []
@@ -99,6 +101,7 @@ class CleanupService:
return CleanupReport(
temporary_jobs=temporary_jobs,
pending_products=pending_products,
failed_products=self.product_store.failed_product_cleanups(),
reclaimable_bytes=sum(item.size_bytes for item in temporary_jobs) + product_bytes,
reminder_job_ids=reminder_job_ids,
)