From 584bb3a64829a4b338d86ae3c59b566fc897b1e3 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Fri, 20 Oct 2023 12:24:18 +0200 Subject: [PATCH] (fs) interface cleanup --- .../storage/FileStorageService.java | 11 ++++++++++ .../control/node/svc/ControlNodeService.java | 20 +++++++++---------- .../actor/task/TransferDomainsActor.java | 15 +++++--------- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/code/common/config/src/main/java/nu/marginalia/storage/FileStorageService.java b/code/common/config/src/main/java/nu/marginalia/storage/FileStorageService.java index 7fbd646c..abd48d01 100644 --- a/code/common/config/src/main/java/nu/marginalia/storage/FileStorageService.java +++ b/code/common/config/src/main/java/nu/marginalia/storage/FileStorageService.java @@ -491,6 +491,17 @@ public class FileStorageService { public List getActiveFileStorages(FileStorageType type) throws SQLException { return getActiveFileStorages(node, type); } + public Optional getOnlyActiveFileStorage(FileStorageType type) throws SQLException { + return getOnlyActiveFileStorage(node, type); + } + + public Optional getOnlyActiveFileStorage(int nodeId, FileStorageType type) throws SQLException { + var storages = getActiveFileStorages(nodeId, type); + if (storages.size() > 1) { + throw new IllegalStateException("Expected [0,1] instances of FileStorage with type " + type + ", found " + storages.size()); + } + return storages.stream().findFirst(); + } public List getActiveFileStorages(int nodeId, FileStorageType type) throws SQLException { diff --git a/code/services-core/control-service/src/main/java/nu/marginalia/control/node/svc/ControlNodeService.java b/code/services-core/control-service/src/main/java/nu/marginalia/control/node/svc/ControlNodeService.java index 67dfb0f0..5f090dd1 100644 --- a/code/services-core/control-service/src/main/java/nu/marginalia/control/node/svc/ControlNodeService.java +++ b/code/services-core/control-service/src/main/java/nu/marginalia/control/node/svc/ControlNodeService.java @@ -159,13 +159,13 @@ public class ControlNodeService { private Object triggerAutoRecrawl(Request request, Response response) throws SQLException { int nodeId = Integer.parseInt(request.params("id")); - var toCrawl = fileStorageService.getActiveFileStorages(nodeId, FileStorageType.CRAWL_DATA); - if (toCrawl.size() != 1) - throw new IllegalStateException(); + var toCrawl = fileStorageService.getOnlyActiveFileStorage(nodeId, FileStorageType.CRAWL_DATA); - executorClient.triggerRecrawl(Context.fromRequest(request), + executorClient.triggerRecrawl( + Context.fromRequest(request), nodeId, - toCrawl.get(0)); + toCrawl.orElseThrow(AssertionError::new) + ); return redirectToOverview(request); } @@ -173,13 +173,11 @@ public class ControlNodeService { private Object triggerAutoProcess(Request request, Response response) throws SQLException { int nodeId = Integer.parseInt(request.params("id")); - var toConvert = fileStorageService.getActiveFileStorages(nodeId, FileStorageType.CRAWL_DATA); - if (toConvert.size() != 1) - throw new IllegalStateException(); + var toConvert = fileStorageService.getOnlyActiveFileStorage(nodeId, FileStorageType.CRAWL_DATA); executorClient.triggerConvert(Context.fromRequest(request), nodeId, - toConvert.get(0)); + toConvert.orElseThrow(AssertionError::new)); return redirectToOverview(request); } @@ -187,11 +185,11 @@ public class ControlNodeService { private Object triggerLoadSelected(Request request, Response response) throws SQLException { int nodeId = Integer.parseInt(request.params("id")); - var toLoad = fileStorageService.getActiveFileStorages(nodeId, FileStorageType.PROCESSED_DATA); + var toLoadStorages = fileStorageService.getActiveFileStorages(nodeId, FileStorageType.PROCESSED_DATA); executorClient.loadProcessedData(Context.fromRequest(request), nodeId, - new LoadParameters(toLoad) + new LoadParameters(toLoadStorages) ); return redirectToOverview(request); diff --git a/code/services-core/executor-service/src/main/java/nu/marginalia/actor/task/TransferDomainsActor.java b/code/services-core/executor-service/src/main/java/nu/marginalia/actor/task/TransferDomainsActor.java index d38019b9..0310f208 100644 --- a/code/services-core/executor-service/src/main/java/nu/marginalia/actor/task/TransferDomainsActor.java +++ b/code/services-core/executor-service/src/main/java/nu/marginalia/actor/task/TransferDomainsActor.java @@ -20,21 +20,14 @@ import nu.marginalia.process.log.WorkLog; import nu.marginalia.service.module.ServiceConfiguration; import nu.marginalia.storage.FileStorageService; import nu.marginalia.storage.model.FileStorageBaseType; -import nu.marginalia.storage.model.FileStorageId; import nu.marginalia.storage.model.FileStorageType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.BufferedWriter; import java.io.IOException; -import java.io.OutputStreamWriter; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.StandardCopyOption; -import java.nio.file.StandardOpenOption; -import java.nio.file.attribute.PosixFilePermissions; import java.util.UUID; -import java.util.zip.GZIPOutputStream; @Singleton public class TransferDomainsActor extends AbstractActorPrototype { @@ -89,7 +82,7 @@ public class TransferDomainsActor extends AbstractActorPrototype { Ensure preconditions are met """) public Message init(Message message) throws Exception { - var storages = storageService.getActiveFileStorages(FileStorageType.CRAWL_DATA); + var storages = storageService.getOnlyActiveFileStorage(FileStorageType.CRAWL_DATA); // Ensure crawl data exists to receive into if (storages.isEmpty()) { @@ -100,7 +93,6 @@ public class TransferDomainsActor extends AbstractActorPrototype { "Crawl Data" ); storageService.enableFileStorage(storage.id()); - } return message; @@ -114,7 +106,10 @@ public class TransferDomainsActor extends AbstractActorPrototype { """ ) public Message transferData(Message message) throws Exception { - var storageId = storageService.getActiveFileStorages(FileStorageType.CRAWL_DATA).get(0); + var storageId = storageService + .getOnlyActiveFileStorage(FileStorageType.CRAWL_DATA) + .orElseThrow(AssertionError::new); // This Shouldn't Happen (tm) + var storage = storageService.getStorage(storageId); var spec = executorClient.getTransferSpec(Context.internal(), message.sourceNode, message.count);