2021-03-16 17:38:53 +01:00
package eu.openaire.urls_worker.components ;
2022-09-12 15:48:44 +02:00
import eu.openaire.urls_worker.UrlsWorkerApplication ;
import eu.openaire.urls_worker.controllers.GeneralController ;
2021-11-27 01:37:33 +01:00
import eu.openaire.urls_worker.util.AssignmentsHandler ;
2021-03-16 17:38:53 +01:00
import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;
import org.springframework.scheduling.annotation.Scheduled ;
import org.springframework.stereotype.Component ;
@Component
public class ScheduledTasks {
private static final Logger logger = LoggerFactory . getLogger ( ScheduledTasks . class ) ;
2021-05-20 02:28:48 +02:00
2022-02-21 11:48:21 +01:00
@Scheduled ( fixedDelay = 1 ) // Request the next batch immediately after the last one finishes.
2021-10-14 02:03:47 +02:00
public void handleNewAssignments ( ) {
2022-02-21 11:48:21 +01:00
if ( AssignmentsHandler . hadConnectionErrorOnRequest ) {
2022-09-12 15:48:44 +02:00
if ( GeneralController . shouldShutdownWorker ) // Make sure the worker shuts-down, in case the user sends the relevant request, while the worker is stuck in a data-request error-loop.
2023-01-17 17:25:49 +01:00
// TODO - Should this worker inform the Controller that will shutdown?
2022-09-12 15:48:44 +02:00
UrlsWorkerApplication . gentleAppShutdown ( ) ;
2022-02-21 11:48:21 +01:00
try {
Thread . sleep ( 900_000 ) ; // Sleep for 15 mins to stall the scheduler from retrying right away, thus giving time to the Controller to recover.
} catch ( InterruptedException ie ) {
logger . warn ( " Sleeping was interrupted! " ) ;
} finally {
AssignmentsHandler . hadConnectionErrorOnRequest = false ;
}
2021-11-26 16:04:31 +01:00
}
2022-02-21 11:48:21 +01:00
AssignmentsHandler . handleAssignments ( ) ;
2021-05-20 02:28:48 +02:00
}
2021-06-22 04:58:07 +02:00
}