{"record":{"id":"8db505154f33d1a6","repo":"apache/beam","slug":"makewindowedvaluecoder-couldn-t-process-coder-for","errorCode":null,"errorMessage":"makeWindowedValueCoder: couldn't process coder for pcollection %q %v: %w","messagePattern":"makeWindowedValueCoder: couldn't process coder for pcollection %q (.+?): %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"sdks/go/pkg/beam/runners/prism/internal/coders.go","lineNumber":89,"sourceCode":"\t// Exclude CoderLengthPrefix from the list. Even though it is a composite coder,\n\t// we never need to introspect its component.\n\t// urns.CoderLengthPrefix:     {},\n}\n\nfunc isKnownCompositeCoder(c *pipepb.Coder) bool {\n\t_, ok := knownCompositeCoders[c.GetSpec().GetUrn()]\n\treturn ok\n}\n\n// makeWindowedValueCoder gets the coder for the PCollection, renders it safe, and adds it to the coders map.\n//\n// PCollection coders are not inherently WindowValueCoder wrapped, and they are added by the runner\n// for crossing the FnAPI boundary at data sources and data sinks.\nfunc makeWindowedValueCoder(pID string, comps *pipepb.Components, coders map[string]*pipepb.Coder) (string, error) {\n\tcol := comps.GetPcollections()[pID]\n\tcID, err := lpUnknownCoders(col.GetCoderId(), coders, comps.GetCoders())\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"makeWindowedValueCoder: couldn't process coder for pcollection %q %v: %w\", pID, prototext.Format(col), err)\n\t}\n\twcID := comps.GetWindowingStrategies()[col.GetWindowingStrategyId()].GetWindowCoderId()\n\n\t// The runner needs to be defensive, and tell the SDK to Length Prefix\n\t// any coders that it doesn't understand.\n\t// So here, we look at the coder and its components, and produce\n\t// new coders that we know how to deal with.\n\n\t// Produce ID for the Windowed Value Coder\n\twvcID := \"cwv_\" + pID\n\twInC := &pipepb.Coder{\n\t\tSpec: &pipepb.FunctionSpec{\n\t\t\tUrn: urns.CoderWindowedValue,\n\t\t},\n\t\tComponentCoderIds: []string{cID, wcID},\n\t}\n\t// Populate the coders to send with the new windowed value coder.\n\tcoders[wvcID] = wInC","sourceCodeStart":71,"sourceCodeEnd":107,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/go/pkg/beam/runners/prism/internal/coders.go#L71-L107","documentation":"makeWindowedValueCoder wraps a PCollection's coder in a windowed value coder for the FnAPI boundary in the prism runner. This error means resolving/length-prefixing the PCollection's coder via lpUnknownCoders failed, so the runner cannot build a valid coder descriptor for that PCollection and pipeline execution cannot proceed.","triggerScenarios":"executePipeline/buildDescriptor processes a pipeline containing a PCollection whose coder ID cannot be resolved in comps coders, or whose coder tree contains an unknown/unresolvable coder — the wrapped error from lpUnknownCoders carries the root cause.","commonSituations":"Pipelines submitted with hand-crafted or cross-language (xlang) coders the prism runner cannot canonicalize; corrupted or trimmed pipeline protos; SDK-side coder construction bugs.","solutions":["Read the wrapped %w error to find the root-cause coder that failed and fix its definition in the pipeline","Ensure all coders referenced by PCollection coder IDs exist in the pipeline's coders map","Upgrade the Beam SDK/runner versions so both sides agree on coder URNs","For xlang expansions, confirm expansion service produced well-formed coders"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"col := comps.GetPcollections()[pID]\nif col == nil { return fmt.Errorf(\"pcollection %q missing\", pID) }\nif _, err := lpUnknownCoders(col.GetCoderId(), map[string]*pipepb.Coder{}, comps.GetCoders()); err != nil {\n    return fmt.Errorf(\"pcollection %q coder unresolvable: %w\", pID, err)\n}","typeGuard":null,"tryCatchPattern":"if _, err := makeWindowedValueCoder(pID, comps, coders); err != nil {\n    return fmt.Errorf(\"pipeline prep failed: %w\", err)\n}","preventionTips":["Keep Beam SDK and prism runner versions aligned","Validate pipeline protos (all coder IDs defined) before submission","For xlang, verify expansion services emit complete coder trees"],"tags":["beam","go","prism-runner","coders"],"backgroundTag":"resource-not-found","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}