From 2b3c1678452c4cef1b265d83d09ada2cdce8bd92 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Fri, 20 Oct 2023 13:13:36 +0200 Subject: [PATCH] (controller) Additional configuration options for node --- .../nodecfg/NodeConfigurationService.java | 16 +++++++++++----- .../nodecfg/model/NodeConfiguration.java | 2 ++ .../V23_11_0_003__node_configuration.sql | 2 ++ .../control/node/svc/ControlNodeService.java | 2 ++ .../templates/control/node/node-config.hdb | 16 ++++++++++++++++ 5 files changed, 33 insertions(+), 5 deletions(-) diff --git a/code/common/config/src/main/java/nu/marginalia/nodecfg/NodeConfigurationService.java b/code/common/config/src/main/java/nu/marginalia/nodecfg/NodeConfigurationService.java index 71970ae0..89237090 100644 --- a/code/common/config/src/main/java/nu/marginalia/nodecfg/NodeConfigurationService.java +++ b/code/common/config/src/main/java/nu/marginalia/nodecfg/NodeConfigurationService.java @@ -39,7 +39,7 @@ public class NodeConfigurationService { public List getAll() throws SQLException { try (var conn = dataSource.getConnection(); var qs = conn.prepareStatement(""" - SELECT ID, DESCRIPTION, ACCEPT_QUERIES, DISABLED + SELECT ID, DESCRIPTION, ACCEPT_QUERIES, AUTO_CLEAN, PRECESSION, DISABLED FROM NODE_CONFIGURATION """)) { var rs = qs.executeQuery(); @@ -51,6 +51,8 @@ public class NodeConfigurationService { rs.getInt("ID"), rs.getString("DESCRIPTION"), rs.getBoolean("ACCEPT_QUERIES"), + rs.getBoolean("AUTO_CLEAN"), + rs.getBoolean("PRECESSION"), rs.getBoolean("DISABLED") )); } @@ -61,7 +63,7 @@ public class NodeConfigurationService { public NodeConfiguration get(int nodeId) throws SQLException { try (var conn = dataSource.getConnection(); var qs = conn.prepareStatement(""" - SELECT ID, DESCRIPTION, ACCEPT_QUERIES, DISABLED + SELECT ID, DESCRIPTION, ACCEPT_QUERIES, AUTO_CLEAN, PRECESSION, DISABLED FROM NODE_CONFIGURATION WHERE ID=? """)) { @@ -72,6 +74,8 @@ public class NodeConfigurationService { rs.getInt("ID"), rs.getString("DESCRIPTION"), rs.getBoolean("ACCEPT_QUERIES"), + rs.getBoolean("AUTO_CLEAN"), + rs.getBoolean("PRECESSION"), rs.getBoolean("DISABLED") ); } @@ -84,14 +88,16 @@ public class NodeConfigurationService { try (var conn = dataSource.getConnection(); var us = conn.prepareStatement(""" UPDATE NODE_CONFIGURATION - SET DESCRIPTION=?, ACCEPT_QUERIES=?, DISABLED=? + SET DESCRIPTION=?, ACCEPT_QUERIES=?, AUTO_CLEAN=?, PRECESSION=?, DISABLED=? WHERE ID=? """)) { us.setString(1, config.description()); us.setBoolean(2, config.acceptQueries()); - us.setBoolean(3, config.disabled()); - us.setInt(4, config.node()); + us.setBoolean(3, config.autoClean()); + us.setBoolean(4, config.includeInPrecession()); + us.setBoolean(5, config.disabled()); + us.setInt(6, config.node()); if (us.executeUpdate() <= 0) throw new IllegalStateException("Failed to update configuration"); diff --git a/code/common/config/src/main/java/nu/marginalia/nodecfg/model/NodeConfiguration.java b/code/common/config/src/main/java/nu/marginalia/nodecfg/model/NodeConfiguration.java index dc01ff39..3b04f5f7 100644 --- a/code/common/config/src/main/java/nu/marginalia/nodecfg/model/NodeConfiguration.java +++ b/code/common/config/src/main/java/nu/marginalia/nodecfg/model/NodeConfiguration.java @@ -3,6 +3,8 @@ package nu.marginalia.nodecfg.model; public record NodeConfiguration(int node, String description, boolean acceptQueries, + boolean autoClean, + boolean includeInPrecession, boolean disabled ) { diff --git a/code/common/db/src/main/resources/db/migration/V23_11_0_003__node_configuration.sql b/code/common/db/src/main/resources/db/migration/V23_11_0_003__node_configuration.sql index 792bc691..c626c841 100644 --- a/code/common/db/src/main/resources/db/migration/V23_11_0_003__node_configuration.sql +++ b/code/common/db/src/main/resources/db/migration/V23_11_0_003__node_configuration.sql @@ -2,5 +2,7 @@ CREATE TABLE NODE_CONFIGURATION ( ID INT PRIMARY KEY, DESCRIPTION VARCHAR(255), ACCEPT_QUERIES BOOLEAN, + AUTO_CLEAN BOOLEAN DEFAULT TRUE, + PRECESSION BOOLEAN DEFAULT TRUE, DISABLED BOOLEAN DEFAULT FALSE ); \ No newline at end of file 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 5f090dd1..9aae4b32 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 @@ -318,6 +318,8 @@ public class ControlNodeService { nodeId, request.queryParams("description"), "on".equalsIgnoreCase(request.queryParams("acceptQueries")), + "on".equalsIgnoreCase(request.queryParams("autoClean")), + "on".equalsIgnoreCase(request.queryParams("includeInPrecession")), "on".equalsIgnoreCase(request.queryParams("disabled")) ); diff --git a/code/services-core/control-service/src/main/resources/templates/control/node/node-config.hdb b/code/services-core/control-service/src/main/resources/templates/control/node/node-config.hdb index c99e4d79..5ecaf2dd 100644 --- a/code/services-core/control-service/src/main/resources/templates/control/node/node-config.hdb +++ b/code/services-core/control-service/src/main/resources/templates/control/node/node-config.hdb @@ -52,6 +52,22 @@
Sets whether queries will be routed to this node
+
+ + + +
If true, the system will automatically purge intermediate stages of data processing. + This should probably be on in production and probably off in testing. +
+
+ +
+ + + +
If true, this node will be included in the crawling precession.
+
+