apache/beam · error · Error
Data should not come in via process.
Error message
Data should not come in via process.
What it means
This operator processes data only through its own data channel; its process() entry point is deliberately unimplemented. Any windowed value delivered via process is an internal invariant violation and throws immediately.
Solutions
- Verify the bundle descriptor / instruction wiring maps PCollections to the correct operator.
- Update the Beam runner and TypeScript SDK to matching versions.
- Report/inspect as a worker bug if reproducible with a simple pipeline.
Defensive patterns
Strategy: validation
Validate before calling
// validate bundle descriptor wiring: every PCollection id maps to an operator with a data channel
for (const d of descriptor.infos) {
if (!d.transformId) throw new Error("Bad operator wiring in bundle descriptor");
} Try / catch
try {
operator.process(value);
} catch (e) {
if (e.message.includes("Data should not come in via process")) {
// log descriptor wiring and file a worker bug
}
} Prevention
- Keep Beam runner and TS SDK versions aligned.
- Test bundle wiring with minimal pipelines after upgrading.
When it happens
Trigger: The Beam Fn API dispatch layer routes an element to this operator's process() method instead of its configured data channel (e.g. a wiring/mapping mismatch in the bundle descriptor).
Common situations: Runner/worker protocol mismatch; malformed process bundle descriptor mapping a PCollection to the wrong operator; bugs in the experimental TypeScript worker integration.
Understand the failure class
Background: "This is a bug, please report it": internal invariant violations, unreachable panics, and SNH errors explained — this error's family across 47 libraries.
Related errors
- Not expecting timers.
- Timers not yet supported.
- buildDescriptor: couldn't retrieve coder
- Control channel closed.
- Internal error determining boundedness of Read
AI-assisted analysis of apache/beam@12126d8942 (2026-09-13).
Data as JSON: /api/errors/e40bafa6b0836aba.
Report an issue: GitHub.
Appendix: source
Thrown at sdks/typescript/src/apache_beam/worker/operators.ts:257
lastYield = new Date().getTime();
}
}
},
sendTimers: async function (timerFamilyId: string, timers: Uint8Array) {
throw Error("Not expecting timers.");
},
close: function () {
endOfDataResolve();
},
onError: function (error: Error) {
endOfDataReject(error);
},
},
);
}
process(wvalue: WindowedValue<unknown>): ProcessResult {
throw Error("Data should not come in via process.");
}
split(
desiredSplit: fnApi.ProcessBundleSplitRequest_DesiredSplit,
): fnApi.ProcessBundleSplitResponse_ChannelSplit | undefined {
if (!this.started) {
return undefined;
}
// If we've already split, we know where the end of this bundle is.
// Otherwise, use the estimate the runner sent us (which is how much
// it expects to send us) as the end.
const end =
this.lastToProcessElement < Infinity
? this.lastToProcessElement
: Number(desiredSplit.estimatedInputElements) - 1;
if (this.lastProcessedElement >= end) {
return undefined;
}View on GitHub (pinned to 12126d8942)