{"record":{"id":"1131436bbe97a353","repo":"apache/beam","slug":"multioutputreceiver-unsupported-in-s","errorCode":null,"errorMessage":"MultiOutputReceiver unsupported in %s","messagePattern":"MultiOutputReceiver unsupported in (.+?)","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/DoFnInvoker.java","lineNumber":408,"sourceCode":"      throw new UnsupportedOperationException(\n          String.format(\"OutputReceiver unsupported in %s\", getErrorContext()));\n    }\n\n    @Override\n    public OutputReceiver<Row> outputRowReceiver(DoFn<InputT, OutputT> doFn) {\n      throw new UnsupportedOperationException(\n          String.format(\"Row OutputReceiver unsupported in %s\", getErrorContext()));\n    }\n\n    @Override\n    public MultiOutputReceiver taggedOutputReceiver(DoFn<InputT, OutputT> doFn) {\n      throw new UnsupportedOperationException(\n          String.format(\"MultiOutputReceiver unsupported in %s\", getErrorContext()));\n    }\n\n    @Override\n    public Object restriction() {\n      throw new UnsupportedOperationException(\n          String.format(\"Restriction unsupported in %s\", getErrorContext()));\n    }\n\n    @Override\n    public BoundedWindow window() {\n      throw new UnsupportedOperationException(\n          String.format(\"BoundedWindow unsupported in %s\", getErrorContext()));\n    }\n\n    @Override\n    public PaneInfo paneInfo(DoFn<InputT, OutputT> doFn) {\n      throw new UnsupportedOperationException(\n          String.format(\"PaneInfo unsupported in %s\", getErrorContext()));\n    }\n\n    @Override\n    public PipelineOptions pipelineOptions() {\n      throw new UnsupportedOperationException(","sourceCodeStart":390,"sourceCodeEnd":426,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/DoFnInvoker.java#L390-L426","documentation":"taggedOutputReceiver() throws UnsupportedOperationException because the invoker implementation has no MultiOutputReceiver bound. Multi-output (tagged) DoFns need this to write to named output tags. The error context names the unsupported invoker.","triggerScenarios":"DoFn.ProcessElement code calling c.output(tag, value) when the invoker's taggedOutputReceiver has no factory; direct invocation of taggedOutputReceiver(DoFn) on a DelegatingDoFnInvoker.","commonSituations":"Running a multi-output DoFn through a minimal invoker or test harness that only supports single output; custom batch/windowing utilities invoking the DoFn directly.","solutions":["Provide a multiOutputReceiver factory (e.g. DoFnInvoker.MultiOutputProvider) when building the invoker","Use the runner's ProcessContext, which implements tagged outputs, rather than the base invoker","In tests use DoFnTester.takeOutputTag or wire tagged receivers","If only main output is needed, switch the code path to outputReceiver"],"exampleFix":"// before\nDoFnInvoker invoker = DoFnInvokers.newInvoker(doFn);\ninvoker.taggedOutputReceiver(doFn).get(tag).output(v); // throws\n// after\nDoFnInvoker invoker = DoFnInvokers.newInvoker(doFn,\n    DoFnInvoker.MultiOutputProvider.boundToMap(tagMap));","handlingStrategy":"type-guard","validationCode":"boolean multi = !doFnTagMap.isEmpty(); // only need tagged receiver for multi-output DoFns","typeGuard":"null","tryCatchPattern":"try { invoker.taggedOutputReceiver(doFn).get(tag).output(v); } catch (UnsupportedOperationException e) { /* route to fallback receiver */ }","preventionTips":["Bind MultiOutputReceiver provider for multi-output DoFns","Use runner ProcessContext for tagged outputs","Test multi-output DoFns with DoFnTester.takeOutputTag"],"tags":["apache-beam","java","unsupported-operation","multi-output"],"backgroundTag":"unsupported-operation","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"}