apache/beam · error · UnsupportedOperationException
Row OutputReceiver unsupported in
Error message
Row OutputReceiver unsupported in %s
What it means
outputRowReceiver() throws UnsupportedOperationException because this invoker implementation has no Row output receiver bound. It exists for DoFns producing schema Row outputs; when unsupported, the invoker cannot deliver Row-typed outputs. The message's error context says which invoker it was.
Solutions
- Bind a row output receiver factory when constructing the invoker
- Use the standard runner path where schema output receivers are wired automatically
- If the DoFn does not emit Rows, avoid calling outputRowReceiver; use outputReceiver instead
- Verify schema/Row output configuration on the PTransform
Example fix
// before
OutputReceiver<Row> rr = invoker.outputRowReceiver(doFn); // throws
// after
OutputReceiver<Row> rr = rowReceiverFactory != null
? invoker.outputRowReceiver(doFn)
: adaptToRowReceiver(invoker.outputReceiver(doFn)); Defensive patterns
Strategy: fallback
Validate before calling
boolean schemaOutput = doFn instanceof DoFnWithRowOutput;
Type guard
null
Try / catch
try { rr = invoker.outputRowReceiver(doFn); } catch (UnsupportedOperationException e) { rr = adapt(invoker.outputReceiver(doFn)); } Prevention
- Only call outputRowReceiver for Row-producing schema DoFns
- Bind a row receiver factory in custom invokers
- Verify schema pipeline configuration
When it happens
Trigger: Calling outputRowReceiver(DoFn) on a base DelegatingDoFnInvoker or an invoker constructed without a row output receiver factory; schema-aware DoFn code emitting Row outputs through an invoker without row support.
Common situations: Pipeline steps that convert DoFn output to Beam Rows (schema pipelines) run through a custom or stub invoker; test harness that only wires generic output receivers.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- Schema element unsupported in
- BoundedWindow unsupported in
- Cannot access fire timestamp outside of @OnTimer method.
- Cannot access OnTimerContext outside of @OnTimer methods.
- Cannot access OnWindowExpirationContext outside of…
AI-assisted analysis of apache/beam@12126d8942 (2026-09-13).
Data as JSON: /api/errors/3d8dbffad0b090c1.
Report an issue: GitHub.
Appendix: source
Thrown at sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/DoFnInvoker.java:402
throw new UnsupportedOperationException(
String.format("TimeDomain unsupported in %s", getErrorContext()));
}
@Override
public OutputReceiver<OutputT> outputReceiver(DoFn<InputT, OutputT> doFn) {
throw new UnsupportedOperationException(
String.format("OutputReceiver unsupported in %s", getErrorContext()));
}
@Override
public OutputReceiver<Row> outputRowReceiver(DoFn<InputT, OutputT> doFn) {
throw new UnsupportedOperationException(
String.format("Row OutputReceiver unsupported in %s", getErrorContext()));
}
@Override
public MultiOutputReceiver taggedOutputReceiver(DoFn<InputT, OutputT> doFn) {
throw new UnsupportedOperationException(
String.format("MultiOutputReceiver unsupported in %s", getErrorContext()));
}
@Override
public Object restriction() {
throw new UnsupportedOperationException(
String.format("Restriction unsupported in %s", getErrorContext()));
}
@Override
public BoundedWindow window() {
throw new UnsupportedOperationException(
String.format("BoundedWindow unsupported in %s", getErrorContext()));
}
@Override
public PaneInfo paneInfo(DoFn<InputT, OutputT> doFn) {
throw new UnsupportedOperationException(View on GitHub (pinned to 12126d8942)