{"record":{"id":"f4f3994612e92ad1","repo":"apache/beam","slug":"missing-corresponding-pcollection-of-named-output-v-is","errorCode":null,"errorMessage":"missing corresponding pcollection of named output: %v is expected in %v","messagePattern":"missing corresponding pcollection of named output: (.+?) is expected in (.+?)","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"sdks/go/pkg/beam/core/runtime/graphx/xlang.go","lineNumber":184,"sourceCode":"\t\tvar id string\n\t\tisBounded := true\n\n\t\tswitch tag {\n\t\tcase graph.UnnamedOutputTag:\n\t\t\tfor _, id = range expandedOutputs {\n\t\t\t\t// easiest way to access map with one entry (key,value)\n\t\t\t}\n\t\tdefault:\n\t\t\tid = expandedOutputs[tag]\n\t\t}\n\n\t\tif pcol, exists := expandedPCollections[id]; exists {\n\t\t\tif pcol.GetIsBounded() == pipepb.IsBounded_UNBOUNDED {\n\t\t\t\tisBounded = false\n\t\t\t}\n\t\t\tisBoundedUpdater(node, isBounded)\n\t\t} else {\n\t\t\tpanic(errors.Errorf(\"missing corresponding pcollection of named output: %v is expected in %v\", id, expandedPCollections))\n\t\t}\n\n\t}\n}\n\n// AddFakeImpulses adds an impulse transform as the producer for each input to\n// the root transform. Inputs need producers to form a correct pipeline.\nfunc AddFakeImpulses(p *pipepb.Pipeline) {\n\t// For a pipeline consisting of only the external node edge, there will be\n\t// single root transform which will be the external transform.\n\t// Adding fake impulses per input to this external transform\n\ttransforms := p.GetComponents().GetTransforms()\n\text := transforms[p.GetRootTransformIds()[0]]\n\n\tfor tag, id := range ext.GetInputs() {\n\t\tkey := fmt.Sprintf(\"%s_%s\", \"impulse\", tag)\n\t\toutput := map[string]string{\"out\": id}\n","sourceCodeStart":166,"sourceCodeEnd":202,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/go/pkg/beam/core/runtime/graphx/xlang.go#L166-L202","documentation":"ResolveOutputIsBounded maps each output node of an expanded transform to its corresponding PCollection in the expanded components and propagates boundedness. This panic fires when an output PCollection ID from the expanded transform is not present in the expanded PCollections map.","triggerScenarios":"TryCrossLanguage resolving outputs where expanded.Transform lists an output ID missing from expanded.Components' Pcollections map (inconsistent expansion response).","commonSituations":"Buggy or mismatched expansion service returning partial components; expansion payload truncated or hand-edited; version drift between the expansion service and SDK protos.","solutions":["Regenerate the expansion via TryCrossLanguage to get a consistent components payload.","Check the expansion service logs for errors producing incomplete Pcollections maps.","Upgrade the Beam SDK/expansion service to matching versions so protos align."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"defer func() {\n    if r := recover(); r != nil {\n        return fmt.Errorf(\"expansion components inconsistent: %v\", r)\n    }\n}()","preventionTips":["Retry expansion from scratch rather than reusing partially expanded results.","Match SDK and expansion service versions to avoid proto drift.","Check expansion service logs for truncated component payloads."],"tags":["go","apache-beam","cross-language","pcollection"],"backgroundTag":"entity-not-found","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-20T03:17:13.778Z"}