From 28cfa07b8ef68a152f4fd7a5e87147802abde7de Mon Sep 17 00:00:00 2001 From: Simon Krogmann Date: Fri, 16 Oct 2026 17:15:53 +0200 Subject: [PATCH] Fix output error status in slurm email using apptainer --- Makefile | 2 +- output.R | 2 +- scripts/output/comparison/compareScenarios2.R | 2 +- scripts/output/comparison/validateScenarios.R | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 011ebefb3..fce079941 100644 --- a/Makefile +++ b/Makefile @@ -141,7 +141,7 @@ test-full: ## Run all tests, including coupling tests and a default test-full-slurm: ##test-full, but on slurm $(info Full tests take more than an hour to run, please be patient) make ensure-reqs - @sbatch --qos=priority --wrap="$(RSCRIPT_SLURM_HOOK) make test-full" --job-name=test-full --mail-type=END,FAIL --output=test-full.log --comment="test-full.log" + @sbatch --qos=priority --wrap="set -e; $(RSCRIPT_SLURM_HOOK) make test-full" --job-name=test-full --mail-type=END,FAIL --output=test-full.log --comment="test-full.log" test-validation: ## Run validation tests, requires a full set of runs in the output folder $(info Run validation tests, requires a full set of runs in the output folder) diff --git a/output.R b/output.R index 2044591e3..9b5eb6aed 100755 --- a/output.R +++ b/output.R @@ -338,7 +338,7 @@ runSingle <- function(output, outputdirs, slurmConfig, interactiveSession, test) hookedRscript <- trimws(paste(Sys.getenv("RSCRIPT_SLURM_HOOK", unset = ""), "Rscript")) Rscripts <- paste0(hookedRscript, " scripts/output/single/", name, " --outputdir=", outputdir, collapse = "; ") slurmcmd <- paste0("sbatch ", slurmConfig, " --job-name=", logfile, " --output=", logfile, - " --mail-type=END,FAIL --comment=output.R --wrap='", Rscripts, "'") + " --mail-type=END,FAIL --comment=output.R --wrap='set -e; ", Rscripts, "'") message("Sending to slurm: ", paste(name, collapse = ", "), ". Find log in ", logfile) system(slurmcmd) } diff --git a/scripts/output/comparison/compareScenarios2.R b/scripts/output/comparison/compareScenarios2.R index f16647aa6..e1225361c 100644 --- a/scripts/output/comparison/compareScenarios2.R +++ b/scripts/output/comparison/compareScenarios2.R @@ -75,7 +75,7 @@ startComp <- function( " --mail-type=END,FAIL --time=200", if (!grepl("--mem", slurmConfig)) " --mem=8000", # Prefix RSCRIPT_SLURM_HOOK for piam-apptainer integration (empty if unset) - " --wrap=\"", trimws(paste(Sys.getenv("RSCRIPT_SLURM_HOOK", unset = ""), "Rscript")), " ", script, + " --wrap=\"set -e; ", trimws(paste(Sys.getenv("RSCRIPT_SLURM_HOOK", unset = ""), "Rscript")), " ", script, " --outputdirs=", shQuote(paste(outputdirs, collapse = ",")), " --profileName=", shQuote(profileName), " --outFileName=", shQuote(outFileName), diff --git a/scripts/output/comparison/validateScenarios.R b/scripts/output/comparison/validateScenarios.R index fc127e3ec..8c5945f15 100644 --- a/scripts/output/comparison/validateScenarios.R +++ b/scripts/output/comparison/validateScenarios.R @@ -33,7 +33,7 @@ startVal <- function(outputDirs, validationConfig, validationReportName, nameCor " --error=", jobName, ".out", " --mail-type=END --time=200 --mem-per-cpu=8000", # Prefix RSCRIPT_SLURM_HOOK for piam-apptainer integration (empty if unset) - " --wrap=\"", trimws(paste(Sys.getenv("RSCRIPT_SLURM_HOOK", unset = ""), "Rscript")), " ", script, + " --wrap=\"set -e; ", trimws(paste(Sys.getenv("RSCRIPT_SLURM_HOOK", unset = ""), "Rscript")), " ", script, " --outputdirs=", shQuote(paste(outputDirs, collapse = ",")), " --validationConfig=", shQuote(validationConfig), " --validationReportName=", shQuote(validationReportName), @@ -112,4 +112,4 @@ nameCore <- glue::glue("{prefix}{valName}{repInfix}-{timeStamp}") outputDirs = outputdirs, validationConfig = validationConfig, validationReportName = validationReportName, - nameCore = nameCore) \ No newline at end of file + nameCore = nameCore)