Fix module run crash with multi-output processes#6963
Conversation
…es (#6958) ProcessEntryHandler.printOutput() assumed all output channels were DataflowVariable (value channels), but processes with multiple outputs use DataflowBroadcast (queue channels). Add readChannelValue() helper that handles both channel types via CH.isValue()/CH.getReadChannel(). Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com> Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
✅ Deploy Preview for nextflow-docs-staging canceled.
|
|
Found a hang when running Command used: |
|
I think this PR should be reverted. The proper fix should be in the channel construction logic underlying |
jorgee
left a comment
There was a problem hiding this comment.
Doing some tests with this PR I sometimes get a PoisonPill object.
"versions_fastqc": "groovyx.gpars.dataflow.operator.PoisonPill@2c815fdc"
What should we print in this case null or an empty string?
|
Indeed, the poison pill issue is another issue to be fixed. Opening a new PR for this |
|
Also hangs when a container is not found or when conda env fails. I will have a look at this |
Summary
GroovyCastExceptionwhen runningnextflow module runon processes with multiple output channels (e.g.nf-core/fastqc)ProcessEntryHandler.printOutput()assumed all output channels wereDataflowVariable(value channels), but processes with multiple outputs useDataflowBroadcast(queue channels)readChannelValue()helper that detects the channel type viaCH.isValue()and reads accordinglyFixes #6958
Test plan
readChannelValuecorrectly reads fromDataflowVariablereadChannelValuecorrectly reads fromDataflowBroadcastnextflow module run nf-core/fastqcand verify no cast error🤖 Generated with Claude Code