We've moved!
For WDL questions, see the WDL specification and WDL docs.
For Cromwell questions, see the Cromwell docs and please post any issues on Github.

How do I enable call caching in cromwell?

LeeTL1220LeeTL1220 Arlington, MAMember, Broadie, Dev ✭✭✭

Hello Cromwell team,

I would like to take advantage of call-caching (job avoidance). What are the exact steps?


Best Answer


  • KateNKateN Cambridge, MAMember, Broadie, Moderator admin

    There are a couple ways that call caching can be enabled for Cromwell. The first is to modify Cromwell's default configuration file, which you will find at src/main/resources/application.conf. This config file is json-like, so you can enable call caching by adding the following stanza to the file.

    call-caching {
        enabled = true
        lookup-docker-hash = false 

    Rather than modifying the config file in place, you can also choose to copy it, modify the copy, then specify which config file to use at runtime, like so:

    java -Dconfig.file=/path/to/application.conf -jar cromwell.jar

    If you just want to use call caching for a few runs and you don't want to go through the trouble of modifying the config file, you can also choose to modify the call-caching variables from the command line itself:

    java -Dcall-caching.enabled=true -Dlookup-docker-hash=false -jar cromwell.jar

    For more information on call caching options, you can read this section of the cromwell spec.

  • LeeTL1220LeeTL1220 Arlington, MAMember, Broadie, Dev ✭✭✭

    @KateN While I think this will technically enable call caching, results will not persist between cromwell runs, since it will be deleted at the end of a workflow run. I believe that you need to stand up a mysql instance and configure application.conf in additional ways.

Sign In or Register to comment.