Bug report
Expected behavior and actual behavior
A pipeline with a Channel<E> or Value<V> param in its params block, including one inside an included pipeline's params record (#7213), should report to Seqera Platform and record lineage like any other pipeline.
Instead, both serialize session.params on flow begin, while these params are still unbound dataflow values:
- With
-with-tower, the begin request blocks forever reading the channel. The run stays SUBMITTED with no tasks, and SIGTERM does not stop it. With only Value params it does not hang, but the request contains invalid JSON ("params":{"factor":{"source":},...}).
- With
lineage.enabled = true, the workflow run record fails to encode (logged at debug level only), so the run is missing from nextflow lineage list.
Steps to reproduce the problem
nextflow.enable.types = true
params {
input: Channel<Sample>
factor: Value<Integer>
}
record Sample {
id: String
count: Integer
}
process SCALE {
input:
s: Sample
factor: Integer
output:
stdout()
script:
"echo ${s.id} \$(( ${s.count} * ${factor} ))"
}
workflow {
main:
SCALE( params.input, params.factor ).view()
}
printf 'id,count\na,1\n' > samples.csv
nextflow run main.nf --input samples.csv --factor 5 -with-tower <endpoint>
nextflow run main.nf --input samples.csv --factor 5 -c lineage.config # lineage.enabled = true
Program output
Main thread with -with-tower:
"main" #1 WAITING (parking)
at groovyx.gpars.dataflow.expression.DataflowExpression.getVal(DataflowExpression.java:261)
...
at io.seqera.tower.plugin.TowerJsonGenerator.getObjectProperties(TowerJsonGenerator.groovy:64)
...
at io.seqera.tower.plugin.TowerClient.traceBegin(TowerClient.groovy:130)
at io.seqera.tower.plugin.TowerObserver.onFlowBegin(TowerObserver.groovy:246)
.nextflow.log with lineage enabled:
DEBUG nextflow.Session - Failed making field 'java.security.AccessControlContext#context' accessible; either increase its visibility or write a custom TypeAdapter for its declaring type.
com.google.gson.JsonIOException: Failed making field 'java.security.AccessControlContext#context' accessible; ...
at nextflow.lineage.LinObserver.storeWorkflowRun(LinObserver.groovy:187)
at nextflow.lineage.LinObserver.onFlowBegin(LinObserver.groovy:128)
Environment
- Nextflow version: 26.09.1-edge (master d09c3c1)
- Java version: 21.0.10
- Operating system: macOS (aarch64)
- Bash version: zsh 5.9
Additional context
Pipelines without dataflow params are not affected. Dataflow params were added by #7213 and are not in a release yet.
Bug report
Expected behavior and actual behavior
A pipeline with a
Channel<E>orValue<V>param in itsparamsblock, including one inside an included pipeline's params record (#7213), should report to Seqera Platform and record lineage like any other pipeline.Instead, both serialize
session.paramson flow begin, while these params are still unbound dataflow values:-with-tower, the begin request blocks forever reading the channel. The run stays SUBMITTED with no tasks, and SIGTERM does not stop it. With onlyValueparams it does not hang, but the request contains invalid JSON ("params":{"factor":{"source":},...}).lineage.enabled = true, the workflow run record fails to encode (logged at debug level only), so the run is missing fromnextflow lineage list.Steps to reproduce the problem
Program output
Main thread with
-with-tower:.nextflow.logwith lineage enabled:Environment
Additional context
Pipelines without dataflow params are not affected. Dataflow params were added by #7213 and are not in a release yet.