Fix repository cleanup after removal and expiration (#782)

This commit is contained in:
Thomas Durieux authored and GitHub committed 2026-08-20 12:52:19 +02:00
1 parent 46e956a779
commit 35c3b1804b
8 files changed
+370 -69

No files matched your search

+19 -11
View File
@@ -17,23 +17,31 @@ export async function processRemoveRepository(
) {
const { connect, getRepository }: Database =
database || require("../../server/database");
let repo: Awaited<ReturnType<typeof getRepositoryImport>> | undefined;
try {
await connect();
logger.info("removing repository", { repoId: job.data.repoId });
const repo = await getRepository(job.data.repoId);
repo = await getRepository(job.data.repoId);
await repo.updateStatus(RepositoryStatus.REMOVING, "");
try {
await repo.remove();
} catch (error) {
if (error instanceof Error) {
await repo.updateStatus(RepositoryStatus.ERROR, error.message);
} else if (typeof error === "string") {
await repo.updateStatus(RepositoryStatus.ERROR, error);
}
throw error;
}
await repo.remove();
logger.info("repository removed", { repoId: job.data.repoId });
} catch (error) {
if (repo) {
const message =
error instanceof Error
? error.message
: typeof error === "string"
? error
: "removal_failed";
try {
await repo.updateStatus(RepositoryStatus.ERROR, message);
} catch (statusError) {
logger.error("failed to record repository removal error", {
...serializeError(statusError),
repoId: job.data.repoId,
});
}
}
logger.error("repository removal failed", {
...serializeError(error),
repoId: job.data.repoId,