diff --git a/src/main/java/eu/openaire/urls_worker/components/ScheduledTasks.java b/src/main/java/eu/openaire/urls_worker/components/ScheduledTasks.java index 7a7cfc0..5c1d8ec 100644 --- a/src/main/java/eu/openaire/urls_worker/components/ScheduledTasks.java +++ b/src/main/java/eu/openaire/urls_worker/components/ScheduledTasks.java @@ -1,6 +1,8 @@ package eu.openaire.urls_worker.components; +import eu.openaire.urls_worker.UrlsWorkerApplication; import eu.openaire.urls_worker.controllers.FullTextsController; +import eu.openaire.urls_worker.controllers.GeneralController; import eu.openaire.urls_worker.plugins.PublicationsRetrieverPlugin; import eu.openaire.urls_worker.util.AssignmentsHandler; import org.apache.commons.io.FileUtils; @@ -24,6 +26,8 @@ public class ScheduledTasks { @Scheduled(fixedDelay = 1) // Request the next batch immediately after the last one finishes. public void handleNewAssignments() { if ( AssignmentsHandler.hadConnectionErrorOnRequest ) { + 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. + UrlsWorkerApplication.gentleAppShutdown(); 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) { diff --git a/src/main/java/eu/openaire/urls_worker/controllers/FullTextsController.java b/src/main/java/eu/openaire/urls_worker/controllers/FullTextsController.java index bbc7e3a..ae16568 100644 --- a/src/main/java/eu/openaire/urls_worker/controllers/FullTextsController.java +++ b/src/main/java/eu/openaire/urls_worker/controllers/FullTextsController.java @@ -14,7 +14,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.io.File; -import java.io.FileInputStream; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.HashMap; import java.util.List; @@ -80,7 +81,7 @@ public class FullTextsController { return ResponseEntity.ok() .contentType(MediaType.APPLICATION_OCTET_STREAM) .header(HttpHeaders.CONTENT_DISPOSITION, "inline; filename=\"" + zipName + "\"") - .body(new InputStreamResource(new FileInputStream(zipFileFullPath))); + .body(new InputStreamResource(Files.newInputStream(Paths.get(zipFileFullPath)))); } catch (Exception e) { String errorMsg = "Could not load the FileInputStream of the zip-file \"" + zipFileFullPath + "\"!"; logger.error(errorMsg, e); @@ -104,7 +105,7 @@ public class FullTextsController { return ResponseEntity.ok() .contentType(MediaType.APPLICATION_OCTET_STREAM) .header(HttpHeaders.CONTENT_DISPOSITION, "inline; filename=\"" + file.getName() + "\"") - .body(new InputStreamResource(new FileInputStream(fullTextFileFullPath))); + .body(new InputStreamResource(Files.newInputStream(Paths.get(fullTextFileFullPath)))); } catch (Exception e) { String errorMsg = "Could not load the FileInputStream of the full-text-file \"" + fullTextFileFullPath + "\"!"; logger.error(errorMsg, e);