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.data.jpa.repository.JpaRepository;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
@ -10,7 +11,7 @@ import java.util.Optional;
|
||||||
public interface VideoProcessingTaskRepository extends JpaRepository<VideoProcessingTask, Long> {
|
public interface VideoProcessingTaskRepository extends JpaRepository<VideoProcessingTask, Long> {
|
||||||
Optional<VideoProcessingTask> findByVideoIdentifier(String identifier);
|
Optional<VideoProcessingTask> findByVideoIdentifier(String identifier);
|
||||||
|
|
||||||
boolean existsByVideoIdentifier(String identifier);
|
|
||||||
|
|
||||||
List<VideoProcessingTask> findAllByStatusOrderByCreatedAtDesc(VideoProcessingTask.Status status);
|
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.nio.file.Path;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
import java.util.concurrent.TimeUnit;
|
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) {
|
private void processVideo(VideoProcessingTask task) {
|
||||||
log.info("Started processing video {}.", task.getVideoIdentifier());
|
log.info("Started processing video {}.", task.getVideoIdentifier());
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue