(assistant) Add scheduled update job for screenshot information

This commit is contained in:
Viktor Lofgren 2024-09-27 14:16:28 +02:00
parent c91435e314
commit 3566fe296a

View File

@ -21,6 +21,9 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.stream.IntStream;
public class SimilarDomainsService {
@ -48,7 +51,33 @@ public class SimilarDomainsService {
this.dataSource = dataSource;
this.linkGraphClient = linkGraphClient;
Thread.ofPlatform().start(this::init);
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
service.scheduleWithFixedDelay(this::init, 0, 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() {
@ -137,18 +166,7 @@ public class SimilarDomainsService {
activeDomains.add(idx);
}
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);
}
updateScreenshotInfo();
logger.info("Loaded {} domains", domainRanks.size());
isReady = true;