fix: preserve removal intent when Redis enqueue fails

This commit is contained in:
tdurieux
2026-09-06 09:16:17 +02:00
parent 12b0bb52c0
commit f5f44c2511
3 changed files with 42 additions and 9 deletions
+1 -1
View File
@@ -203,7 +203,7 @@ export async function recoverStuckRemoving() {
...serializeError(e),
repoId: doc.repoId,
});
await markErrorIfRemoving(doc.repoId, "removal_interrupted");
// Keep REMOVING so another recovery pass can retry the enqueue.
}
}
} catch (e) {
+3 -8
View File
@@ -241,14 +241,9 @@ router.delete(
const user = await getUser(req);
isOwnerOrAdmin([repo.owner.id], user);
await repo.updateStatus(RepositoryStatus.REMOVING);
try {
await addRemovalJob(repo.repoId);
} catch (error) {
const message =
error instanceof Error ? error.message : "removal_enqueue_failed";
await repo.updateStatus(RepositoryStatus.ERROR, message);
throw error;
}
// Keep removal intent durable if Redis is unavailable. Recovery can
// enqueue it later, and public requests must remain blocked meanwhile.
await addRemovalJob(repo.repoId);
return res.json({ status: repo.status });
} catch (error) {
handleError(error, res, req);