From ab8086a35d4b93a99d126573fece51d9123064ce Mon Sep 17 00:00:00 2001 From: pfurio Date: Mon, 30 Sep 2024 15:50:31 +0200 Subject: [PATCH] analysis: improve last execution steps, #TASK-6445 --- .../analysis/workflow/NextFlowExecutor.java | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/workflow/NextFlowExecutor.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/workflow/NextFlowExecutor.java index d1717460f6..2c431c104a 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/workflow/NextFlowExecutor.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/workflow/NextFlowExecutor.java @@ -32,6 +32,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.IOException; import java.io.UncheckedIOException; import java.net.URL; import java.nio.file.Files; @@ -295,35 +296,46 @@ protected void run() throws Exception { StopWatch stopWatch = StopWatch.createStarted(); DockerUtils.run(dockerImage, inputBindings, outputBinding, stringBuilder.toString(), dockerParams); logger.info("Execution time: " + TimeUtils.durationToString(stopWatch)); + } + + @Override + protected void finalize() throws Throwable { + super.finalize(); + } + + @Override + protected void onShutdown() { endTraceFileMonitor(); + deleteTemporalFiles(); + } + private void deleteTemporalFiles() { // Delete input files and temporal directory try (Stream paths = Files.walk(temporalInputDir)) { paths.sorted(Comparator.reverseOrder()) .map(Path::toFile) .forEach(java.io.File::delete); + } catch (IOException e) { + logger.error("Could not delete temporal input directory: " + temporalInputDir, e); } - // Delete temporal files and folders created by nextflow try (Stream paths = Files.walk(getOutDir().resolve(".nextflow"))) { paths.sorted(Comparator.reverseOrder()) .map(Path::toFile) .forEach(java.io.File::delete); + } catch (IOException e) { + logger.error("Could not delete temporal nextflow directory: " + getOutDir().resolve(".nextflow"), e); } try (Stream paths = Files.walk(getOutDir().resolve("work"))) { paths.sorted(Comparator.reverseOrder()) .map(Path::toFile) .forEach(java.io.File::delete); + } catch (IOException e) { + logger.error("Could not delete temporal work directory: " + getOutDir().resolve("work"), e); } } - @Override - protected void onShutdown() { - super.onShutdown(); - endTraceFileMonitor(); - } - protected void endTraceFileMonitor() { if (thread != null) { thread.interrupt();