diff --git a/backend/src/main/java/com/storycove/service/AsyncBackupService.java b/backend/src/main/java/com/storycove/service/AsyncBackupService.java index 0570375..84d0baa 100644 --- a/backend/src/main/java/com/storycove/service/AsyncBackupService.java +++ b/backend/src/main/java/com/storycove/service/AsyncBackupService.java @@ -48,7 +48,10 @@ public class AsyncBackupService { BackupJob job = new BackupJob(libraryId, type); job = backupJobRepository.save(job); - // Start backup in background + // Force flush to ensure job is committed to DB before async execution + backupJobRepository.flush(); + + // Start backup in background (async method will run in separate thread after this transaction commits) executeBackupAsync(job.getId()); return job; @@ -58,7 +61,7 @@ public class AsyncBackupService { * Execute backup asynchronously */ @Async - @Transactional + @Transactional(propagation = org.springframework.transaction.annotation.Propagation.REQUIRES_NEW) public void executeBackupAsync(UUID jobId) { Optional jobOpt = backupJobRepository.findById(jobId); if (jobOpt.isEmpty()) {