{"record":{"id":"182bafca5a6ce187","repo":"argoproj/argo-workflows","slug":"currently-set-only-targets-suspend-nodes-no-susp","errorCode":null,"errorMessage":"currently, set only targets suspend nodes: no suspend nodes matching nodeFieldSelector: %s","messagePattern":"currently, set only targets suspend nodes: no suspend nodes matching nodeFieldSelector: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"workflow/util/util.go","lineNumber":710,"sourceCode":"\t\t\t\t\t\t\t\t\tnode.Outputs.Parameters[i].ValueFrom = nil\n\t\t\t\t\t\t\t\t\tnodeUpdated = true\n\t\t\t\t\t\t\t\t\thit = true\n\t\t\t\t\t\t\t\t\tAddParamToGlobalScope(ctx, wf, node.Outputs.Parameters[i])\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif !hit {\n\t\t\t\t\t\t\t\treturn true, fmt.Errorf(\"node is not expecting output parameter '%s'\", name)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\twf.Status.Nodes.Set(ctx, nodeID, node)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif !nodeUpdated {\n\t\t\treturn true, fmt.Errorf(\"currently, set only targets suspend nodes: no suspend nodes matching nodeFieldSelector: %s\", nodeFieldSelector)\n\t\t}\n\n\t\terr = hydrator.Dehydrate(ctx, wf)\n\t\tif err != nil {\n\t\t\treturn true, fmt.Errorf(\"unable to compress or offload workflow nodes: %w\", err)\n\t\t}\n\t\tcreator.LabelActor(ctx, wf, action)\n\t\t_, err = wfIf.Update(ctx, wf, metav1.UpdateOptions{})\n\t\tif err != nil {\n\t\t\tif apierr.IsConflict(err) {\n\t\t\t\t// Try again if we have a conflict\n\t\t\t\treturn false, nil\n\t\t\t}\n\t\t\treturn true, err\n\t\t}\n\n\t\treturn true, nil\n\t})","sourceCodeStart":692,"sourceCodeEnd":728,"githubUrl":"https://github.com/argoproj/argo-workflows/blob/35bff19146f5a6ada77468c431f2624bd577e373/workflow/util/util.go#L692-L728","documentation":"Thrown by FormulateSetOutputs (workflow/util/util.go:710) when an `argo set` operation (SetWorkflowOutputs or similar) finds no node that both is an active suspend node and matches the supplied nodeFieldSelector. The `set` command currently only supports modifying outputs of suspend nodes, so if the selector matches zero suspend nodes there is nothing to update and the operation aborts before updating the Workflow object.","triggerScenarios":"Calling `argo set <wf> <nodeId> --message ... --output-parameters ...` or the underlying util.SetWorkflowOutputs where the nodeFieldSelector matches no node in wf.Status.Nodes for which node.IsActiveSuspendNode() is true — e.g. the selector targets a running pod/steps node, the suspend already resumed (node no longer active), or the selector expression simply matches no nodes.","commonSituations":"Typing a nodeFieldSelector (e.g. `name=step1`) that refers to a regular task rather than a suspend step; attempting `argo set` after the suspend was already resumed or the workflow moved on; workflows whose suspend nodes are named differently than expected.","solutions":["Verify the target is a suspend step (`type: Suspend`) and still in Running/Pending phase; only active suspend nodes qualify.","Fix the nodeFieldSelector expression so it matches the suspend node (e.g. `name=<suspend-step-name>`); list nodes with `argo get` to confirm names.","Re-run `argo resume`/`argo set` before the suspend resumes, or resubmit/restart the workflow if the suspend window has passed.","If you need to alter outputs of non-suspend nodes, that is unsupported — restructure the workflow to place the overridable outputs on a suspend step."],"exampleFix":"// before: selector matches a non-suspend node\nargo set mywf --node-field-selector name=build-task --output-parameters result=abc\n// after: target the suspend step by its exact name\nargo set mywf --node-field-selector name=wait-for-approval --output-parameters result=abc","handlingStrategy":"validation","validationCode":"wf, _ := client.ArgoprojV1alpha1().Workflows(ns).Get(ctx, name, metav1.GetOptions{})\nfor id, n := range wf.Status.Nodes {\n    if n.Type == wfv1.NodeTypeSuspend && n.Phase == wfv1.NodePhaseRunning {\n        fmt.Println(\"settable suspend node:\", n.Name)\n    }\n}\n// only run `argo set` if the selector will match one of these names","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Only use `argo set` against nodes of type Suspend that are still Running","Copy node names exactly from `argo get` output when building nodeFieldSelector","Automate set operations right after the suspend starts, not after resume","Remember `set` targets suspend nodes only — never point it at task/steps nodes"],"tags":["argo-workflows","suspend-nodes","node-field-selector","cli"],"backgroundTag":"no-matching-suspend-node","analyzedSha":"35bff19146f5a6ada77468c431f2624bd577e373","analyzedAt":"2026-09-03T19:34:35.908Z","contentChangedAt":"2026-09-03T19:34:35.908Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}