From 9a46cd08147c48c30c32e12a29f0450afd60d99e Mon Sep 17 00:00:00 2001 From: Gregor Lohaus Date: Wed, 25 Feb 2026 17:28:11 +0100 Subject: [PATCH] remove conditional from filecleanup service for native iamge compatibility --- .../gtransfer/GtransferApplication.java | 7 +++++ .../gtransfer/config/DefaultConfig.java | 1 - .../gtransfer/config/types/UploadConfig.java | 2 -- .../gtransfer/controller/Env.java | 28 ------------------- .../{ => filecleanup}/FileCleanupService.java | 22 ++++++++++----- .../FileCleanupServiceConfiguration.java | 19 +++++++++++++ .../StorageServiceConfiguration.java | 2 -- 7 files changed, 41 insertions(+), 40 deletions(-) delete mode 100644 Backend/src/main/java/com/gregor_lohaus/gtransfer/controller/Env.java rename Backend/src/main/java/com/gregor_lohaus/gtransfer/services/{ => filecleanup}/FileCleanupService.java (72%) create mode 100644 Backend/src/main/java/com/gregor_lohaus/gtransfer/services/filecleanup/FileCleanupServiceConfiguration.java diff --git a/Backend/src/main/java/com/gregor_lohaus/gtransfer/GtransferApplication.java b/Backend/src/main/java/com/gregor_lohaus/gtransfer/GtransferApplication.java index c158483..fba83e4 100644 --- a/Backend/src/main/java/com/gregor_lohaus/gtransfer/GtransferApplication.java +++ b/Backend/src/main/java/com/gregor_lohaus/gtransfer/GtransferApplication.java @@ -1,5 +1,6 @@ package com.gregor_lohaus.gtransfer; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ImportRuntimeHints; @@ -9,11 +10,17 @@ import com.gregor_lohaus.gtransfer.config.ConfigRuntimeHints; import com.gregor_lohaus.gtransfer.model.ModelRuntimeHints; import com.gregor_lohaus.gtransfer.native_image.HibernateRuntimeHints; import com.gregor_lohaus.gtransfer.native_image.WebRuntimeHints; +import com.gregor_lohaus.gtransfer.services.filecleanup.FileCleanupService; + +import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @RestController +@EnableScheduling @ImportRuntimeHints({ConfigRuntimeHints.class, HibernateRuntimeHints.class, ModelRuntimeHints.class, WebRuntimeHints.class}) public class GtransferApplication { + @Autowired + private FileCleanupService cleanupService; public static void main(String[] args) { SpringApplication.run(GtransferApplication.class, args); } diff --git a/Backend/src/main/java/com/gregor_lohaus/gtransfer/config/DefaultConfig.java b/Backend/src/main/java/com/gregor_lohaus/gtransfer/config/DefaultConfig.java index f6d5109..52940b0 100644 --- a/Backend/src/main/java/com/gregor_lohaus/gtransfer/config/DefaultConfig.java +++ b/Backend/src/main/java/com/gregor_lohaus/gtransfer/config/DefaultConfig.java @@ -48,7 +48,6 @@ public class DefaultConfig { uc.maxDownloadLimit = 100; uc.maxExpiryDays = 30; uc.cleanupEnabled = true; - uc.cleanupIntervalMs = 3600000L; c.uploadConfig = uc; config = c; diff --git a/Backend/src/main/java/com/gregor_lohaus/gtransfer/config/types/UploadConfig.java b/Backend/src/main/java/com/gregor_lohaus/gtransfer/config/types/UploadConfig.java index f4ee3e3..7c7e801 100644 --- a/Backend/src/main/java/com/gregor_lohaus/gtransfer/config/types/UploadConfig.java +++ b/Backend/src/main/java/com/gregor_lohaus/gtransfer/config/types/UploadConfig.java @@ -11,6 +11,4 @@ public class UploadConfig implements TomlSerializable { public Integer maxExpiryDays; @Property(name = "cleanupEnabled") public Boolean cleanupEnabled; - @Property(name = "cleanupIntervalMs") - public Long cleanupIntervalMs; } diff --git a/Backend/src/main/java/com/gregor_lohaus/gtransfer/controller/Env.java b/Backend/src/main/java/com/gregor_lohaus/gtransfer/controller/Env.java deleted file mode 100644 index e4dd935..0000000 --- a/Backend/src/main/java/com/gregor_lohaus/gtransfer/controller/Env.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gregor_lohaus.gtransfer.controller; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.env.ConfigurableEnvironment; -import org.springframework.core.env.MutablePropertySources; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; - -import com.gregor_lohaus.gtransfer.services.filewriter.AbstractStorageService; - -@RestController -public class Env { - @Autowired - private ConfigurableEnvironment env; - @Autowired - private AbstractStorageService storageService; - @GetMapping("/env") - public String env() { - StringBuilder b = new StringBuilder(); - MutablePropertySources sources = this.env.getPropertySources(); - sources.forEach((var m) -> { - b.append(m.toString()); - b.append("\n"); - }); - b.append(storageService.getClass().toString()); - return b.toString(); - } -} diff --git a/Backend/src/main/java/com/gregor_lohaus/gtransfer/services/FileCleanupService.java b/Backend/src/main/java/com/gregor_lohaus/gtransfer/services/filecleanup/FileCleanupService.java similarity index 72% rename from Backend/src/main/java/com/gregor_lohaus/gtransfer/services/FileCleanupService.java rename to Backend/src/main/java/com/gregor_lohaus/gtransfer/services/filecleanup/FileCleanupService.java index 3d8f6f5..5a7fd21 100644 --- a/Backend/src/main/java/com/gregor_lohaus/gtransfer/services/FileCleanupService.java +++ b/Backend/src/main/java/com/gregor_lohaus/gtransfer/services/filecleanup/FileCleanupService.java @@ -1,4 +1,4 @@ -package com.gregor_lohaus.gtransfer.services; +package com.gregor_lohaus.gtransfer.services.filecleanup; import java.time.LocalDateTime; import java.util.List; @@ -15,10 +15,11 @@ import com.gregor_lohaus.gtransfer.model.File; import com.gregor_lohaus.gtransfer.model.FileRepository; import com.gregor_lohaus.gtransfer.services.filewriter.AbstractStorageService; -@Component -@ConditionalOnProperty(name = "gtransfer-config.upload.cleanupEnabled", havingValue = "true", matchIfMissing = true) public class FileCleanupService { - + private Boolean enabled; + public FileCleanupService(Boolean enabled) { + this.enabled = enabled; + } private static final Logger log = LoggerFactory.getLogger(FileCleanupService.class); @Autowired @@ -27,17 +28,24 @@ public class FileCleanupService { @Autowired private AbstractStorageService storageService; - @Scheduled(fixedDelayString = "${gtransfer-config.upload.cleanupIntervalMs:3600000}") + @Scheduled(fixedDelay = 30000) @Transactional public void cleanupExpiredFiles() { + log.info("Cleaneup started"); + if (!enabled) { + log.info("Cleaneup skipped"); + return; + } List expired = fileRepository.findExpired(LocalDateTime.now()); - if (expired.isEmpty()) return; + if (expired.isEmpty()) { + log.info("Nothing to clean up"); + return; + }; for (File file : expired) { storageService.delete(file.getId()); fileRepository.delete(file); } - log.info("Cleaned up {} expired file(s)", expired.size()); } } diff --git a/Backend/src/main/java/com/gregor_lohaus/gtransfer/services/filecleanup/FileCleanupServiceConfiguration.java b/Backend/src/main/java/com/gregor_lohaus/gtransfer/services/filecleanup/FileCleanupServiceConfiguration.java new file mode 100644 index 0000000..acfff4e --- /dev/null +++ b/Backend/src/main/java/com/gregor_lohaus/gtransfer/services/filecleanup/FileCleanupServiceConfiguration.java @@ -0,0 +1,19 @@ + +package com.gregor_lohaus.gtransfer.services.filecleanup; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.gregor_lohaus.gtransfer.config.types.StorageServiceType; + +@Configuration +public class FileCleanupServiceConfiguration { + @Bean + public FileCleanupService fileCleanupService( + @Value("${gtransfer-config.upload.cleanupEnabled}") + Boolean enabled + ) { + return new FileCleanupService(enabled); + } +} diff --git a/Backend/src/main/java/com/gregor_lohaus/gtransfer/services/filewriter/StorageServiceConfiguration.java b/Backend/src/main/java/com/gregor_lohaus/gtransfer/services/filewriter/StorageServiceConfiguration.java index 049178e..6268dff 100644 --- a/Backend/src/main/java/com/gregor_lohaus/gtransfer/services/filewriter/StorageServiceConfiguration.java +++ b/Backend/src/main/java/com/gregor_lohaus/gtransfer/services/filewriter/StorageServiceConfiguration.java @@ -5,12 +5,10 @@ import java.nio.file.Path; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.scheduling.annotation.EnableScheduling; import com.gregor_lohaus.gtransfer.config.types.StorageServiceType; @Configuration -@EnableScheduling public class StorageServiceConfiguration { //TODO S3 implementation