From bdc61c2cda3f2c5292ad8c6234696b010be9469e Mon Sep 17 00:00:00 2001 From: LSmyrnaios Date: Mon, 15 Jan 2024 13:35:22 +0200 Subject: [PATCH] When at least one worker is still active and have to wait for service-shutdown, show a log-message to inform the user, including that worker's IP. --- .../urls_controller/components/ScheduledTasks.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/eu/openaire/urls_controller/components/ScheduledTasks.java b/src/main/java/eu/openaire/urls_controller/components/ScheduledTasks.java index 5b8c3e5..d959be7 100644 --- a/src/main/java/eu/openaire/urls_controller/components/ScheduledTasks.java +++ b/src/main/java/eu/openaire/urls_controller/components/ScheduledTasks.java @@ -8,6 +8,7 @@ import eu.openaire.urls_controller.controllers.BulkImportController; import eu.openaire.urls_controller.controllers.ShutdownController; import eu.openaire.urls_controller.controllers.StatsController; import eu.openaire.urls_controller.controllers.UrlsController; +import eu.openaire.urls_controller.models.WorkerInfo; import eu.openaire.urls_controller.payloads.requests.WorkerReport; import eu.openaire.urls_controller.services.UrlsServiceImpl; import eu.openaire.urls_controller.util.FileUtils; @@ -173,14 +174,19 @@ public class ScheduledTasks { // Check whether the workers have not shutdown yet, which means that they either crawl assignments or/and they are waiting for the Controller to process the WorkerReport and then shutdown. Set workerIds = UrlsController.workersInfoMap.keySet(); if ( workerIds.size() > 0 ) { - for ( String workerId : workerIds ) - if ( ! UrlsController.workersInfoMap.get(workerId).getHasShutdown() ) // The workerId is certainly inside the map and has a workerInfo value. + for ( String workerId : workerIds ) { + WorkerInfo workerInfo = UrlsController.workersInfoMap.get(workerId); // The workerId is certainly inside the map and has a workerInfo value. + if ( ! workerInfo.getHasShutdown() ) { + logger.debug("At least one worker (with IP: " + workerInfo.getWorkerIP() + ") is still active. Waiting for all workers to shutdown, before shutting down the service."); return; // If at least 1 worker is still active, then do not shut down the Controller. + } + } logger.info("All workers have already shutdown. Shutting down the Controller.."); } else - logger.info("No workers have participated in the service yet, so the Controller will shut-down immediately."); + logger.info("No workers have participated in the service yet. The Controller will shut-down now."); - // If one worker has crashed, then it will have not informed the Controller. So the controller will think that it is still running and will not shut down. + // IMPORTANT: If one worker has crashed, then it will have not informed the Controller. So the controller will think that it is still running and will not shut down..! + // In this case, we have to manually shut-down the service, from Docker cli. // Any left-over worker-reports are kept to be retried next time the Controller starts.