You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Note: there are two outputs applets, the inner workflow_cwl_step_two_two_wrapper_cwl_outputs applet created by two_wrapper.cwl narrowing the output type from File? in two.cwl to File in two_wrapper.cwl.
When running this, two_wrapper's outputs step fails as seen below:
with the error message:
Environment: Map(two/output -> (TOptional(TFile),VFile(dx://file-GYqV19QJKB2b8pXF24xJ1xBb::/output,Some(output),None,Some(sha1$50a4e988380c09d290acdab4bd53d24ee7b497df),Some(10),Vector(),None,None)))
Evaluating workflow outputs
Evaluating output parameters:
(output1,WorkflowOutputParameter(Some(Identifier(Some(file:/null),workflow.cwl/output1)),None,None,CwlFile,Vector(),None,false,Vector(Identifier(Some(file:/null),one/output)),None,None),CwlFile)
(output2,WorkflowOutputParameter(Some(Identifier(Some(file:/null),workflow.cwl/output2)),None,None,CwlFile,Vector(),None,false,Vector(Identifier(Some(file:/null),two/output)),None,None),CwlFile)
[error] failure executing Workflow action 'Outputs'
java.lang.Exception: cannot coerce VNull to TFile
at dx.core.ir.Value$.coerceTo(Value.scala:311)
at dx.executor.cwl.CwlWorkflowExecutor.$anonfun$evaluateOutputs$3(CwlWorkflowExecutor.scala:329)
at scala.collection.immutable.Vector1.map(Vector.scala:1872)
at scala.collection.immutable.Vector1.map(Vector.scala:375)
at dx.executor.cwl.CwlWorkflowExecutor.evaluateOutputs(CwlWorkflowExecutor.scala:283)
at dx.executor.WorkflowExecutor.evaluateOutputs(WorkflowExecutor.scala:156)
at dx.executor.WorkflowExecutor.apply(WorkflowExecutor.scala:897)
at dx.executor.BaseCli.dispatchCommand(BaseCli.scala:103)
at dx.executor.BaseCli.main(BaseCli.scala:137)
at dxExecutorCwl.MainApp$.delayedEndpoint$dxExecutorCwl$MainApp$1(Main.scala:27)
at dxExecutorCwl.MainApp$delayedInit$body.apply(Main.scala:26)
at scala.Function0.apply$mcV$sp(Function0.scala:39)
at scala.Function0.apply$mcV$sp$(Function0.scala:39)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17)
at scala.App.$anonfun$main$1(App.scala:76)
at scala.App.$anonfun$main$1$adapted(App.scala:76)
at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:563)
at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:561)
at scala.collection.AbstractIterable.foreach(Iterable.scala:926)
at scala.App.main(App.scala:76)
at scala.App.main$(App.scala:74)
at dxExecutorCwl.MainApp$.main(Main.scala:26)
at dxExecutorCwl.MainApp.main(Main.scala)
implying that it's trying to collect outputs for the entire workflow, not the two workflow.
I've had a bit of a delve into the dxCompiler source code to see what might be going on. My theory is that:
If you have a workflow as follows:
one.cwl
:two_wrapper.cwl
:two.cwl
:`cwlpack` workflow
This generates the following applets:
Note: there are two
outputs
applets, the innerworkflow_cwl_step_two_two_wrapper_cwl_outputs
applet created bytwo_wrapper.cwl
narrowing the output type fromFile?
intwo.cwl
toFile
intwo_wrapper.cwl
.When running this, two_wrapper's
outputs
step fails as seen below:with the error message:
implying that it's trying to collect outputs for the entire workflow, not the
two
workflow.I've had a bit of a delve into the dxCompiler source code to see what might be going on. My theory is that:
workflow
property in theCwlWorkflowExecutor
class here:https://github.com/dnanexus/dxCompiler/blob/develop/executorCwl/src/main/scala/dx/executor/cwl/CwlWorkflowExecutor.scala#L271
CwlWorkflowExecutor.create
function. In this function, the following bit of code executes this to find the appropriate workflow:https://github.com/dnanexus/dxCompiler/blob/develop/executorCwl/src/main/scala/dx/executor/cwl/CwlWorkflowExecutor.scala#L78-L82
OriginalName
of the outputs applet is"${wfName}_outputs"
, as can be seen here:https://github.com/dnanexus/dxCompiler/blob/develop/compiler/src/main/scala/dx/translator/cwl/ProcessTranslator.scala#L748
CwlWorkflowExecutor.create
therefore follows:https://github.com/dnanexus/dxCompiler/blob/develop/executorCwl/src/main/scala/dx/executor/cwl/CwlWorkflowExecutor.scala#L98-L103
and considers the wrong workflow
The text was updated successfully, but these errors were encountered: