From aee6c14c4398bbcd5ed40b7e72f1c7fdd0ddec82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20K=C3=B6ster?= Date: Thu, 31 Mar 2022 10:44:18 +0200 Subject: [PATCH] fix: fixed bug in missing input file handling for cluster jobs --- snakemake/executors/__init__.py | 2 +- snakemake/io.py | 5 +++-- tests/test14/Snakefile.nonstandard | 4 +++- tests/test14/raw.0.txt | 0 tests/test14/raw.1.txt | 0 tests/test14/raw.10.txt | 0 tests/test14/raw.11.txt | 0 tests/test14/raw.12.txt | 0 tests/test14/raw.13.txt | 0 tests/test14/raw.14.txt | 0 tests/test14/raw.15.txt | 0 tests/test14/raw.16.txt | 0 tests/test14/raw.17.txt | 0 tests/test14/raw.18.txt | 0 tests/test14/raw.19.txt | 0 tests/test14/raw.2.txt | 0 tests/test14/raw.20.txt | 0 tests/test14/raw.21.txt | 0 tests/test14/raw.3.txt | 0 tests/test14/raw.4.txt | 0 tests/test14/raw.5.txt | 0 tests/test14/raw.6.txt | 0 tests/test14/raw.7.txt | 0 tests/test14/raw.8.txt | 0 tests/test14/raw.9.txt | 0 25 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 tests/test14/raw.0.txt create mode 100644 tests/test14/raw.1.txt create mode 100644 tests/test14/raw.10.txt create mode 100644 tests/test14/raw.11.txt create mode 100644 tests/test14/raw.12.txt create mode 100644 tests/test14/raw.13.txt create mode 100644 tests/test14/raw.14.txt create mode 100644 tests/test14/raw.15.txt create mode 100644 tests/test14/raw.16.txt create mode 100644 tests/test14/raw.17.txt create mode 100644 tests/test14/raw.18.txt create mode 100644 tests/test14/raw.19.txt create mode 100644 tests/test14/raw.2.txt create mode 100644 tests/test14/raw.20.txt create mode 100644 tests/test14/raw.21.txt create mode 100644 tests/test14/raw.3.txt create mode 100644 tests/test14/raw.4.txt create mode 100644 tests/test14/raw.5.txt create mode 100644 tests/test14/raw.6.txt create mode 100644 tests/test14/raw.7.txt create mode 100644 tests/test14/raw.8.txt create mode 100644 tests/test14/raw.9.txt diff --git a/snakemake/executors/__init__.py b/snakemake/executors/__init__.py index 109f4a1c0..9d09cca02 100644 --- a/snakemake/executors/__init__.py +++ b/snakemake/executors/__init__.py @@ -765,7 +765,7 @@ def get_job_args(self, job): if len(wait_for_files) > 20: wait_for_files_file = self.get_jobscript(job) + ".waitforfilesfile.txt" with open(wait_for_files_file, "w") as fd: - print(wait_for_files, sep="\n", file=fd) + print(*wait_for_files, sep="\n", file=fd) waitfiles_parameter = format_cli_arg( "--wait-for-files-file", wait_for_files_file diff --git a/snakemake/io.py b/snakemake/io.py index d22086025..fb12311a7 100755 --- a/snakemake/io.py +++ b/snakemake/io.py @@ -821,12 +821,13 @@ def get_missing(): "Waiting at most {} seconds for missing files.".format(latency_wait) ) for _ in range(latency_wait): - if not get_missing(): + missing = get_missing() + if not missing: return time.sleep(1) raise IOError( "Missing files after {} seconds:\n{}".format( - latency_wait, "\n".join(get_missing()) + latency_wait, "\n".join(missing) ) ) diff --git a/tests/test14/Snakefile.nonstandard b/tests/test14/Snakefile.nonstandard index 0a0f5c6f6..26fa0d948 100644 --- a/tests/test14/Snakefile.nonstandard +++ b/tests/test14/Snakefile.nonstandard @@ -12,7 +12,9 @@ rule all: input: 'test.predictions', 'test.2.inter2' rule compute1: - input: '{name}.in' + input: + '{name}.in', + expand("raw.{i}.txt", i=range(22)) output: ['{name}.%s.inter'%c for c in chromosomes] params: prefix="{name}" run: diff --git a/tests/test14/raw.0.txt b/tests/test14/raw.0.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test14/raw.1.txt b/tests/test14/raw.1.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test14/raw.10.txt b/tests/test14/raw.10.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test14/raw.11.txt b/tests/test14/raw.11.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test14/raw.12.txt b/tests/test14/raw.12.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test14/raw.13.txt b/tests/test14/raw.13.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test14/raw.14.txt b/tests/test14/raw.14.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test14/raw.15.txt b/tests/test14/raw.15.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test14/raw.16.txt b/tests/test14/raw.16.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test14/raw.17.txt b/tests/test14/raw.17.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test14/raw.18.txt b/tests/test14/raw.18.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test14/raw.19.txt b/tests/test14/raw.19.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test14/raw.2.txt b/tests/test14/raw.2.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test14/raw.20.txt b/tests/test14/raw.20.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test14/raw.21.txt b/tests/test14/raw.21.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test14/raw.3.txt b/tests/test14/raw.3.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test14/raw.4.txt b/tests/test14/raw.4.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test14/raw.5.txt b/tests/test14/raw.5.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test14/raw.6.txt b/tests/test14/raw.6.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test14/raw.7.txt b/tests/test14/raw.7.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test14/raw.8.txt b/tests/test14/raw.8.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test14/raw.9.txt b/tests/test14/raw.9.txt new file mode 100644 index 000000000..e69de29bb