Skip to content

WDL call cache can end up with copies of input files (and steal the originals) when they pass through cached tasks #5562

Description

@adamnovak

I was trying to run https://github.com/vgteam/vg_wdl/blob/6b0c72fe2f9000de8250fae8ffd93d94f4182ed2/workflows/acceptance_test.wdl where reference preparation/decompression is split out into a subworkflow. I ran it with an already-uncompressed reference, and with WDL call caching on.

The uncompressed reference made it out of the uncompressReferenceIfNeeded task, and correctly produced an entry in the MiniWDL call cache pointing at the input file path.

But for the new PrepareReference subworkflow, I got an entry in the MiniWDL call cache that didn't point at the original input file. Instead, it pointed at:

/private/groups/patenlab/anovak/trash/acceptance-test/miniwdl-cache/PrepareReference/z6fazypaopkvvg3e4ya73tm2t4tegno5/zwo7k4fjhn7m4upksml4736jx544eqs5/f63a3d1a-ac16-455d-81f8-d9a198425684/AcceptanceTest.PrepareReference.uncompressReferenceIfNeeded/private/groups/patenlab/anovak/projects/hprc/lr-giraffe/references/chm13v2.0-Nonly.fa

Somehow we've put the whole absolute path to the input file in there again, as a relative path.

On the same workflow run, I got a warning message about a WDLOutputsJob using too much space:

[2026-08-06T09:31:27-0700] [Thread-5 (statsAndLoggingAggregator)] [W] [toil.statsAndLogging] Got message from job at time 08-06-2026 09:31:27: Job used more disk than requested. For CWL, consider increasing the outdirMin requirement, otherwise, consider increasing the disk requirement. Job 'WDLOutputsJob' kind-WDLOutputsJob/instance-v3zhroex v1 used 146.98% disk (2.9 GiB [3156275200B] used, 2.0 GiB [2147483648B] requested).

Note that I ran the workflow run with caching, and also it failed due to #5084 because exactly this reference file went missing from the cache while another job was trying to get a .dict for it.

I think to sort this out I need a test workflow calling that vg_wdl commit's PrepareReference as a subworkflow.

I ran more or less:

mkdir -p /private/groups/patenlab/anovak/trash/acceptance-test
cd /private/groups/patenlab/anovak/trash/acceptance-test

cat >acceptance-test.input.json <<'EOF'
{
  "AcceptanceTest.BASELINE_VG_DOCKER": "quay.io/vgteam/vg:ci-2975-d9e86410a8f082f80fcafb467949ea55c07902c8",
  "AcceptanceTest.BASELINE_VG_GIRAFFE_DOCKER": "quay.io/vgteam/vg:ci-2974-be241788a1d921954cab906455dedda98ee86717",
  "AcceptanceTest.BASELINE_VG_SURJECT_OPTIONS": "--read-length long",
  "AcceptanceTest.CANDIDATE_VG_DOCKER": "quay.io/vgteam/vg:ci-2974-be241788a1d921954cab906455dedda98ee86717",
  "AcceptanceTest.CANDIDATE_VG_SURJECT_OPTIONS": "--read-length long --prune-tail-region",
  "AcceptanceTest.INPUT_READ_FILE_1": "/private/groups/patenlab/anovak/projects/hprc/lr-giraffe/reads/real/hifi/HG002/HG002Revio_hg002v1.0.1_hifi_revio_pbmay24.pri.unshuffled.full.fq.gz",
  "AcceptanceTest.PAIRED_READS": false,
  "AcceptanceTest.GIRAFFE_PRESET": "hifi",
  "AcceptanceTest.GBZ_FILE": "/private/groups/patenlab/anovak/projects/hprc/lr-giraffe/graphs/hprc-v2.1-mc-chm13-eval-sampled16o_fragmentlinked-for-real-hifi-HG002-full.gbz",
  "AcceptanceTest.MIN_FILE": "/private/groups/patenlab/anovak/projects/hprc/lr-giraffe/graphs/hprc-v2.1-mc-chm13-eval-sampled16o_fragmentlinked-for-real-hifi-HG002-full.k31.w50.W.path.min",
  "AcceptanceTest.ZIPCODES_FILE": "/private/groups/patenlab/anovak/projects/hprc/lr-giraffe/graphs/hprc-v2.1-mc-chm13-eval-sampled16o_fragmentlinked-for-real-hifi-HG002-full.k31.w50.W.path.zipcodes",
  "AcceptanceTest.DIST_FILE": "/private/groups/patenlab/anovak/projects/hprc/lr-giraffe/graphs/hprc-v2.1-mc-chm13-eval-sampled16o_fragmentlinked-for-real-hifi-HG002-full.dist",
  "AcceptanceTest.SAMPLE_NAME": "HG002",
  "AcceptanceTest.TRUTH_VCF": "https://ftp-trace.ncbi.nlm.nih.gov/ReferenceSamples/giab/data/AshkenazimTrio/analysis/NIST_HG002_DraftBenchmark_defrabbV0.018-20240716/CHM13v2.0_HG2-T2TQ100-V1.1.vcf.gz",
  "AcceptanceTest.TRUTH_VCF_INDEX": "https://ftp-trace.ncbi.nlm.nih.gov/ReferenceSamples/giab/data/AshkenazimTrio/analysis/NIST_HG002_DraftBenchmark_defrabbV0.018-20240716/CHM13v2.0_HG2-T2TQ100-V1.1.vcf.gz.tbi",
  "AcceptanceTest.EVALUATION_REGIONS_BED": "https://ftp-trace.ncbi.nlm.nih.gov/ReferenceSamples/giab/data/AshkenazimTrio/analysis/NIST_HG002_DraftBenchmark_defrabbV0.018-20240716/CHM13v2.0_HG2-T2TQ100-V1.1_smvar.benchmark.bed",
  "AcceptanceTest.RESTRICT_REGIONS_BED": "/private/groups/patenlab/anovak/projects/hprc/lr-giraffe/references/chm13v2.0-Nonly.fa.callable.from.chm13.bed",
  "AcceptanceTest.PAR_REGIONS_BED_FILE": "/private/groups/patenlab/anovak/projects/hprc/lr-giraffe/references/chm13v2.0-Nonly_PAR.bed",
  "AcceptanceTest.HAPLOID_CONTIGS": ["chrX", "chrY"],
  "AcceptanceTest.REFERENCE_FILE": "/private/groups/patenlab/anovak/projects/hprc/lr-giraffe/references/chm13v2.0-Nonly.fa",
  "AcceptanceTest.PATH_LIST_FILE": "/private/groups/patenlab/anovak/projects/hprc/lr-giraffe/references/chm13-pansn-Nonly.fa.paths.callable.txt",
  "AcceptanceTest.REFERENCE_PREFIX": "chm13#0#",
  "AcceptanceTest.HAPLOTYPE_SAMPLING": false,
  "AcceptanceTest.DV_GPU_DOCKER": "gcr.io/deepvariant-docker/deepvariant:head756846963-gpu",
  "AcceptanceTest.DV_NO_GPU_DOCKER": "gcr.io/deepvariant-docker/deepvariant:head756846963",
  "AcceptanceTest.BASELINE_VG_DOCKER": "quay.io/vgteam/vg:v1.64.0",
  "AcceptanceTest.CANDIDATE_VG_DOCKER": "quay.io/vgteam/vg:v1.64.0",
  "AcceptanceTest.LEFTALIGN_BAM": true,
  "AcceptanceTest.REALIGN_INDELS": false,
  "AcceptanceTest.DV_MODEL_TYPE": "PACBIO",
  "AcceptanceTest.OUTPUT_BAM": true,
  "AcceptanceTest.OUTPUT_GAF": true,
  "AcceptanceTest.CALL_CORES": 32,
  "AcceptanceTest.CALL_MEM": 200,
  "AcceptanceTest.EVAL_MEM": 120,
  "AcceptanceTest.MAKE_EXAMPLES_MEM": 50
}
EOF

MINIWDL__CALL_CACHE__GET=true MINIWDL__CALL_CACHE__PUT=true MINIWDL__CALL_CACHE__DIR=/private/groups/patenlab/anovak/trash/acceptance-test/miniwdl-cache toil-wdl-runner "https://github.com/vgteam/vg_wdl/raw/refs/heads/acceptance-testing/workflows/acceptance_test.wdl" --input /private/groups/patenlab/anovak/trash/acceptance-test/acceptance-test.input.json --batchLogsDir /private/groups/patenlab/anovak/trash/acceptance-test/logs --jobStore /private/groups/patenlab/anovak/trash/acceptance-test/tree --outputFile /private/groups/patenlab/anovak/trash/acceptance-test/out.json --outputDirectory /private/groups/patenlab/anovak/trash/acceptance-test/out --logFile /private/groups/patenlab/anovak/trash/acceptance-test/log.txt --batchSystem slurm --slurmTime 11:59:59 --caching=True --stats

┆Issue is synchronized with this Jira Story
┆Issue Number: TOIL-1858

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions