Added scheduled task to remove old tasks.
This commit is contained in:
parent
8bdecb7e07
commit
3ec052b442
|
@ -3,6 +3,7 @@ package nl.andrewlalis.gymboardcdn.model;
|
|||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
|
@ -10,7 +11,7 @@ import java.util.Optional;
|
|||
public interface VideoProcessingTaskRepository extends JpaRepository<VideoProcessingTask, Long> {
|
||||
Optional<VideoProcessingTask> findByVideoIdentifier(String identifier);
|
||||
|
||||
boolean existsByVideoIdentifier(String identifier);
|
||||
|
||||
List<VideoProcessingTask> findAllByStatusOrderByCreatedAtDesc(VideoProcessingTask.Status status);
|
||||
|
||||
List<VideoProcessingTask> findAllByCreatedAtBefore(LocalDateTime cutoff);
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@ import java.nio.file.Files;
|
|||
import java.nio.file.Path;
|
||||
import java.time.Duration;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
@ -44,6 +45,27 @@ public class VideoProcessingService {
|
|||
}
|
||||
}
|
||||
|
||||
@Scheduled(fixedRate = 1, timeUnit = TimeUnit.HOURS)
|
||||
public void removeOldTasks() {
|
||||
LocalDateTime cutoff = LocalDateTime.now().minusHours(12);
|
||||
List<VideoProcessingTask> oldTasks = taskRepo.findAllByCreatedAtBefore(cutoff);
|
||||
for (var task : oldTasks) {
|
||||
if (task.getStatus() == VideoProcessingTask.Status.COMPLETED) {
|
||||
log.info("Deleting completed task for video {}.", task.getVideoIdentifier());
|
||||
taskRepo.delete(task);
|
||||
} else if (task.getStatus() == VideoProcessingTask.Status.FAILED) {
|
||||
log.info("Deleting failed task for video {}.", task.getVideoIdentifier());
|
||||
taskRepo.delete(task);
|
||||
} else if (task.getStatus() == VideoProcessingTask.Status.IN_PROGRESS) {
|
||||
log.info("Task for video {} was in progress for too long; deleting.", task.getVideoIdentifier());
|
||||
taskRepo.delete(task);
|
||||
} else if (task.getStatus() == VideoProcessingTask.Status.WAITING) {
|
||||
log.info("Task for video {} was waiting for too long; deleting.", task.getVideoIdentifier());
|
||||
taskRepo.delete(task);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void processVideo(VideoProcessingTask task) {
|
||||
log.info("Started processing video {}.", task.getVideoIdentifier());
|
||||
|
||||
|
|
Loading…
Reference in New Issue