apache/beam · error · Error
Unknown transform type
Error message
Unknown transform type:${transform.spec.urn} What it means
createOperator maps the transform's spec.urn against the operatorsByUrn registry to find the worker-side operator constructor; the urn printed in the message has no registered operator. The faulty input is the transform spec urn in the pipeline proto: the runner asked this worker to execute a transform kind it has no operator for.
Solutions
- Align SDK versions between pipeline submission and worker so all urns in the pipeline are in operatorsByUrn.
- Remove or replace the transform whose urn appears in the message with one supported by the TypeScript worker.
- Register a custom operator under that urn if you intentionally introduced a new transform type.
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at sdks/typescript/src/apache_beam/worker/operators.ts:131 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of apache/beam@12126d8942 (2026-09-13).
Data as JSON: /api/errors/4ffa43679fbb069a.
Report an issue: GitHub.
Appendix: source
Thrown at sdks/typescript/src/apache_beam/worker/operators.ts:131
public getStateProvider: () => StateProvider,
public getBundleId: () => string,
public loggingStageInfo: LoggingStageInfo,
public metricsContainer: MetricsContainer,
) {
this.pipelineContext = new PipelineContext(descriptor, "");
}
}
export function createOperator(
transformId: string,
context: OperatorContext,
): IOperator {
const transform = context.descriptor.transforms[transformId];
// Ensure receivers are eagerly created.
Object.values(transform.outputs).map(context.getReceiver);
let operatorConstructor = operatorsByUrn.get(transform.spec!.urn!);
if (operatorConstructor === null || operatorConstructor === undefined) {
throw new Error("Unknown transform type:" + transform.spec!.urn);
}
return operatorConstructor(transformId, transform, context);
}
type OperatorConstructor = (
transformId: string,
transformProto: PTransform,
context: OperatorContext,
) => IOperator;
interface OperatorClass {
new (
transformId: string,
transformProto: PTransform,
context: OperatorContext,
): IOperator;
}
const operatorsByUrn: Map<string, OperatorConstructor> = new Map();View on GitHub (pinned to 12126d8942)