The 'volatile' Optimization

Available in Cromwell version 49 and higher.

Effect on Call Caching:

The 'volatile' optimization is applied to tasks in their meta section. Call caching will be disabled for any call to that task during the execution of the workflow.

This is particularly useful if:

  • One task can produce stochastic results but you still want to use call caching in the rest of the workflow.
  • You want to guarantee that a task is never call cached for any other reason.

Language Support

WDL

In a WDL task, this optimization is specified by adding a volatile field to the task's meta section. Here's an example:

version 1.0

task make_random_int {

  meta {
    volatile: true
  }

  command <<<
    echo $RANDOM
  >>>

  output {
    Int random = read_string(stdout())
  }
}

Backend Support

The volatile keyword applies equally to all backends.