common-workflow-language / cwl-v1.3

Apache License 2.0
4 stars 4 forks source link

error handling #37

Open tetron opened 1 month ago

tetron commented 1 month ago

Want a way to specify that step failure isn't fatal for the workflow.

Proposal

steps:
  step1:
    onError: fail

Possible values of onError

Discussion points:

Related:

Make successCodes, temporaryFailCodes and permanentFailCodes accept ranges in the form of "1-10"

tetron commented 1 month ago

Discussion:

An option to recover from errors should include a standard reporting mechanism.

Proposal:

onError behavior can be set at the workflow level or the individual step level.

If onError is true, when a step fails, produces "null" on all output parameters and information about the failed step is added to a logical "errors" list which is internal to the workflow runner.

If any errors ocurred, the output object includes a field "cwl:errors" which is an array objects providing basic information about each workflow step that failed.

{
  cwl:errors: [
    {
      stepId: URI for the step definition
      errors: [if this was a subworkflow, errors within the subworkflow]
      index: (scatter index or loop iteration counter, or null)
      jobId: platform-specific identifier for the specific job (provenance id, job uuid, etc)
    }
  ]
}

For cross-product scatters, might want to do 'index' differently.