diff --git a/app/server/modules/backups/backups.service.ts b/app/server/modules/backups/backups.service.ts index 1ff51247..6bcb796b 100644 --- a/app/server/modules/backups/backups.service.ts +++ b/app/server/modules/backups/backups.service.ts @@ -428,23 +428,25 @@ const stopBackup = async (scheduleId: number) => { throw new NotFoundError("Backup schedule not found"); } - const abortController = runningBackups.get(scheduleId); - if (!abortController) { - throw new ConflictError("No backup is currently running for this schedule"); + try { + const abortController = runningBackups.get(scheduleId); + if (!abortController) { + throw new ConflictError("No backup is currently running for this schedule"); + } + + logger.info(`Stopping backup for schedule ${scheduleId}`); + + abortController.abort(); + } finally { + await db + .update(backupSchedulesTable) + .set({ + lastBackupStatus: "warning", + lastBackupError: "Backup was stopped by user", + updatedAt: Date.now(), + }) + .where(eq(backupSchedulesTable.id, scheduleId)); } - - logger.info(`Stopping backup for schedule ${scheduleId}`); - - abortController.abort(); - - await db - .update(backupSchedulesTable) - .set({ - lastBackupStatus: "warning", - lastBackupError: "Backup was stopped by user", - updatedAt: Date.now(), - }) - .where(eq(backupSchedulesTable.id, scheduleId)); }; const runForget = async (scheduleId: number, repositoryId?: string) => {