From b3687e425e57af10ea374aa0af9a14cd85610f4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ant=C3=B3nio=20Lindo?= Date: Wed, 29 Nov 2023 15:45:54 +0000 Subject: [PATCH] Checking for INGESTING dbs in initialization --- .../common/server/ViewerFactory.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/main/java/com/databasepreservation/common/server/ViewerFactory.java b/src/main/java/com/databasepreservation/common/server/ViewerFactory.java index e322afa2..899170b3 100644 --- a/src/main/java/com/databasepreservation/common/server/ViewerFactory.java +++ b/src/main/java/com/databasepreservation/common/server/ViewerFactory.java @@ -7,7 +7,17 @@ */ package com.databasepreservation.common.server; +import com.databasepreservation.common.client.index.IndexResult; +import com.databasepreservation.common.client.index.filter.Filter; +import com.databasepreservation.common.client.index.sort.Sorter; +import com.databasepreservation.common.client.models.structure.ViewerDatabase; +import com.databasepreservation.common.client.index.facets.Facets; +import com.databasepreservation.common.client.models.structure.ViewerDatabaseStatus; +import com.databasepreservation.common.client.models.structure.ViewerDatabaseValidationStatus; import org.apache.solr.client.solrj.SolrClient; +import org.roda.core.data.exceptions.GenericException; +import org.roda.core.data.exceptions.RequestNotValidException; +import org.roda.core.data.v2.index.sublist.Sublist; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,10 +45,30 @@ private static synchronized void instantiate() { solrManager = new DatabaseRowsSolrManager(solrClient); configurationManager = new ConfigurationManager(); activityLogStrategyFactory = new ActivityLogStrategyFactory(); + try { + checkIngestingDBs(); + } catch (GenericException | RequestNotValidException e) { + LOGGER.error("Error checking for ingesting databases in initialization: " + e.getMessage()); + } instantiated = true; } } + public static void checkIngestingDBs() throws RequestNotValidException, GenericException { + Filter emptyFilter = new Filter(); + Facets emptyFacet = new Facets(); + + int dbCounter = solrManager.count(ViewerDatabase.class, emptyFilter).intValue(); + IndexResult dataBases = solrManager.find(ViewerDatabase.class, emptyFilter, Sorter.NONE, + new Sublist(0, dbCounter), emptyFacet); + + for (ViewerDatabase db : dataBases.getResults()) { + if (db.getStatus().equals(ViewerDatabaseStatus.INGESTING)) { + solrManager.markDatabaseCollection(db.getUuid(), ViewerDatabaseStatus.ERROR); + } + } + } + public static Integer getEnvInt(String name, Integer defaultValue) { Integer envInt; try {