From ccf6b7caf3ed1f435ed1d9dec07d6884a25b81a0 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Fri, 27 Sep 2024 14:43:19 +0200 Subject: [PATCH] (assistant) Refactor scheduling of tasks within SimilarDomainsService Changed the scheduling function to use a single schedule call instead of a fixed delay for the init task. The updateScreenshotInfo method was also moved and slightly refactored for clearer readability and consistency. --- .../domains/SimilarDomainsService.java | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/code/functions/domain-info/java/nu/marginalia/functions/domains/SimilarDomainsService.java b/code/functions/domain-info/java/nu/marginalia/functions/domains/SimilarDomainsService.java index 4d4b6fa3..38d07d0e 100644 --- a/code/functions/domain-info/java/nu/marginalia/functions/domains/SimilarDomainsService.java +++ b/code/functions/domain-info/java/nu/marginalia/functions/domains/SimilarDomainsService.java @@ -53,33 +53,12 @@ public class SimilarDomainsService { ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor(); - service.scheduleWithFixedDelay(this::init, 0, 1, TimeUnit.SECONDS); + service.schedule(this::init, 1, TimeUnit.SECONDS); // Update screenshot info every hour service.scheduleAtFixedRate(this::updateScreenshotInfo, 1, 1, TimeUnit.HOURS); } - private void updateScreenshotInfo() { - try (var connection = dataSource.getConnection()) { - try (var stmt = connection.createStatement()) { - var rs = stmt.executeQuery(""" - SELECT EC_DOMAIN.ID - FROM EC_DOMAIN INNER JOIN DATA_DOMAIN_SCREENSHOT AS SCREENSHOT ON EC_DOMAIN.DOMAIN_NAME = SCREENSHOT.DOMAIN_NAME - """); - - while (rs.next()) { - final int id = rs.getInt(1); - final int idx = domainIdToIdx.get(id); - - screenshotDomains.add(idx); - } - } - } - catch (SQLException throwables) { - logger.warn("Failed to update screenshot info", throwables); - } - } - private void init() { logger.info("Loading similar domains data... "); @@ -177,6 +156,27 @@ public class SimilarDomainsService { } } + private void updateScreenshotInfo() { + try (var connection = dataSource.getConnection()) { + try (var stmt = connection.createStatement()) { + var rs = stmt.executeQuery(""" + SELECT EC_DOMAIN.ID + FROM EC_DOMAIN INNER JOIN DATA_DOMAIN_SCREENSHOT AS SCREENSHOT ON EC_DOMAIN.DOMAIN_NAME = SCREENSHOT.DOMAIN_NAME + """); + + while (rs.next()) { + final int id = rs.getInt(1); + final int idx = domainIdToIdx.get(id); + + screenshotDomains.add(idx); + } + } + } + catch (SQLException throwables) { + logger.warn("Failed to update screenshot info", throwables); + } + } + public boolean isReady() { return isReady; }