diff --git a/code/services-core/control-service/src/main/java/nu/marginalia/control/ControlService.java b/code/services-core/control-service/src/main/java/nu/marginalia/control/ControlService.java index 8de2b644..0c415302 100644 --- a/code/services-core/control-service/src/main/java/nu/marginalia/control/ControlService.java +++ b/code/services-core/control-service/src/main/java/nu/marginalia/control/ControlService.java @@ -145,6 +145,7 @@ public class ControlService extends Service { Spark.post("/public/storage/:fid/crawl", controlActorService::triggerCrawling, redirectToActors); Spark.post("/public/storage/:fid/recrawl", controlActorService::triggerRecrawling, redirectToActors); Spark.post("/public/storage/:fid/process", controlActorService::triggerProcessing, redirectToActors); + Spark.post("/public/storage/:fid/process-and-load", controlActorService::triggerProcessingWithLoad, redirectToActors); Spark.post("/public/storage/:fid/load", controlActorService::loadProcessedData, redirectToActors); Spark.post("/public/storage/specs", controlActorService::createCrawlSpecification, redirectToStorage); diff --git a/code/services-core/control-service/src/main/java/nu/marginalia/control/actor/Actor.java b/code/services-core/control-service/src/main/java/nu/marginalia/control/actor/Actor.java index 63e487d8..75c96a22 100644 --- a/code/services-core/control-service/src/main/java/nu/marginalia/control/actor/Actor.java +++ b/code/services-core/control-service/src/main/java/nu/marginalia/control/actor/Actor.java @@ -14,7 +14,6 @@ public enum Actor { CRAWL_JOB_EXTRACTOR, EXPORT_DATA, TRUNCATE_LINK_DATABASE, - CONVERT; diff --git a/code/services-core/control-service/src/main/java/nu/marginalia/control/actor/task/ConvertActor.java b/code/services-core/control-service/src/main/java/nu/marginalia/control/actor/task/ConvertActor.java index f1e4b881..79d2c2bb 100644 --- a/code/services-core/control-service/src/main/java/nu/marginalia/control/actor/task/ConvertActor.java +++ b/code/services-core/control-service/src/main/java/nu/marginalia/control/actor/task/ConvertActor.java @@ -31,6 +31,7 @@ public class ConvertActor extends AbstractStateGraph { // STATES + public static final String INITIAL = "INITIAL"; public static final String CONVERT = "CONVERT"; public static final String CONVERT_ENCYCLOPEDIA = "CONVERT_ENCYCLOPEDIA"; public static final String CONVERT_STACKEXCHANGE = "CONVERT_STACKEXCHANGE"; @@ -72,6 +73,12 @@ public class ConvertActor extends AbstractStateGraph { this.gson = gson; } + @GraphState(name= INITIAL, resume = ResumeBehavior.ERROR, + description = "Pro forma initial state") + public void initial(Integer unused) { + error("This actor does not support the initial state"); + } + @GraphState(name = CONVERT, next = CONVERT_WAIT, resume = ResumeBehavior.ERROR, diff --git a/code/services-core/control-service/src/main/java/nu/marginalia/control/model/FileStorageWithActions.java b/code/services-core/control-service/src/main/java/nu/marginalia/control/model/FileStorageWithActions.java index 4ef9a394..803ad21a 100644 --- a/code/services-core/control-service/src/main/java/nu/marginalia/control/model/FileStorageWithActions.java +++ b/code/services-core/control-service/src/main/java/nu/marginalia/control/model/FileStorageWithActions.java @@ -1,6 +1,7 @@ package nu.marginalia.control.model; import nu.marginalia.db.storage.model.FileStorage; +import nu.marginalia.db.storage.model.FileStorageBaseType; import nu.marginalia.db.storage.model.FileStorageType; public record FileStorageWithActions(FileStorage storage) { @@ -18,7 +19,6 @@ public record FileStorageWithActions(FileStorage storage) { return storage.type() == FileStorageType.CRAWL_DATA; } public boolean isDeletable() { - return storage.type() == FileStorageType.PROCESSED_DATA - || storage.type() == FileStorageType.BACKUP; + return storage.base().type() == FileStorageBaseType.SLOW; } } diff --git a/code/services-core/control-service/src/main/java/nu/marginalia/control/svc/ControlActorService.java b/code/services-core/control-service/src/main/java/nu/marginalia/control/svc/ControlActorService.java index e883310a..03973a62 100644 --- a/code/services-core/control-service/src/main/java/nu/marginalia/control/svc/ControlActorService.java +++ b/code/services-core/control-service/src/main/java/nu/marginalia/control/svc/ControlActorService.java @@ -3,6 +3,7 @@ package nu.marginalia.control.svc; import com.google.inject.Inject; import com.google.inject.Singleton; import nu.marginalia.control.actor.ControlActors; +import nu.marginalia.control.actor.task.ConvertActor; import nu.marginalia.control.actor.task.CrawlJobExtractorActor; import nu.marginalia.control.actor.task.ConvertAndLoadActor; import nu.marginalia.control.actor.task.RecrawlActor; @@ -65,7 +66,18 @@ public class ControlActorService { ); return ""; } + public Object triggerProcessing(Request request, Response response) throws Exception { + controlActors.startFrom( + Actor.CONVERT, + ConvertActor.CONVERT, + FileStorageId.parse(request.params("fid")) + ); + + return ""; + } + + public Object triggerProcessingWithLoad(Request request, Response response) throws Exception { controlActors.start( Actor.CONVERT_AND_LOAD, FileStorageId.parse(request.params("fid")) diff --git a/code/services-core/control-service/src/main/resources/templates/control/storage-details.hdb b/code/services-core/control-service/src/main/resources/templates/control/storage-details.hdb index e1574fd5..65cbd144 100644 --- a/code/services-core/control-service/src/main/resources/templates/control/storage-details.hdb +++ b/code/services-core/control-service/src/main/resources/templates/control/storage-details.hdb @@ -74,7 +74,16 @@