Repository navigation
Fix serialization of dataflow params - #7759
Merged
bentsherman merged 4 commits intoOct 5, 2026
Merged
Conversation
A Channel or Value param is a dataflow value that is bound only when the dataflow network starts, so serializing the session params on flow begin blocked the Seqera Platform begin request forever, and the lineage workflow run record failed to encode and was not saved. The params block also resolves each declared param to a plain value (the samplesheet of a Channel param, the converted value of a Value param). ParamsMap.toPlainMap() replaces each dataflow value in the params, including the fields of a record param, with its plain value, and keeps every other value as is. The Seqera Platform and lineage observers use it in place of the session params. Assisted-by: Claude Code (Opus 5.5) Signed-off-by: Jonathan Manning <jonathan.manning@seqera.io>
✅ Deploy Preview for nextflow-docs ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Assisted-by: Claude Code (Opus 5.5) Signed-off-by: Jonathan Manning <jonathan.manning@seqera.io>
bentsherman
self-requested a review
October 5, 2026 14:40
Replace ParamsHelper.toPlainValue() with a direct overlay of the plain values in ParamsMap.toPlainMap(), and replace the resolveParam0() and resolveDefault0() overloads with a `plain` default argument. Signed-off-by: Ben Sherman <bentshermann@gmail.com>
bentsherman
approved these changes
Oct 5, 2026
bentsherman
left a comment
Member
There was a problem hiding this comment.
Verified the fix end to end against the repro in #7758 (Platform begin/complete and lineage run record). I pushed a small simplification (2ace6c7): toPlainMap() overlays the plain values directly, and the resolveParam0/resolveDefault0 overloads are replaced with a plain default argument.
Remember to bump nf-tower's nextflowVersion at release, since it now calls ParamsMap.toPlainMap().
This was referenced Oct 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #7758
Summary
Typed
ChannelandValueparameters are dataflow values and are not bound until the workflow starts. Serializing them directly fromsession.paramsbreaks the Seqera Platform and lineage observers:Channel.Valueparameter produces invalid JSON.Dataflow params, including those inside an included pipeline's params record, come from #7213 and are not in a release yet.
Changes
This PR adds a plain-value representation for declared pipeline parameters (
ParamsHelper.resolvePlainParams(), exposed asParamsMap.toPlainMap()).Channel<E>params are represented by their original samplesheet value.Value<V>params are represented by their resolved plain value.The plain representation is used only when serializing observer payloads. Runtime workflow parameters remain unchanged and continue to use the
ChannelandValuedataflow objects.The following observers now use the plain representation:
Notes
ParamsMap.toPlainMap(), so its minimum Nextflow version needs bumping at release.session.params.Testing
Added coverage for:
ChannelandValueparamsChannelparam given as aPathin the configWithout this change, the new Platform test times out and the lineage test fails to encode, as do the reproductions from #7758. The full
nextflow,nf-towerandnf-lineagesuites pass.🤖 Generated with Claude Code