{"record":{"id":"4ffa43679fbb069a","repo":"apache/beam","slug":"unknown-transform-type-transform-spec-urn","errorCode":null,"errorMessage":"Unknown transform type:${transform.spec.urn}","messagePattern":"Unknown transform type:(.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"sdks/typescript/src/apache_beam/worker/operators.ts","lineNumber":131,"sourceCode":"    public getStateProvider: () => StateProvider,\n    public getBundleId: () => string,\n    public loggingStageInfo: LoggingStageInfo,\n    public metricsContainer: MetricsContainer,\n  ) {\n    this.pipelineContext = new PipelineContext(descriptor, \"\");\n  }\n}\n\nexport function createOperator(\n  transformId: string,\n  context: OperatorContext,\n): IOperator {\n  const transform = context.descriptor.transforms[transformId];\n  // Ensure receivers are eagerly created.\n  Object.values(transform.outputs).map(context.getReceiver);\n  let operatorConstructor = operatorsByUrn.get(transform.spec!.urn!);\n  if (operatorConstructor === null || operatorConstructor === undefined) {\n    throw new Error(\"Unknown transform type:\" + transform.spec!.urn);\n  }\n  return operatorConstructor(transformId, transform, context);\n}\n\ntype OperatorConstructor = (\n  transformId: string,\n  transformProto: PTransform,\n  context: OperatorContext,\n) => IOperator;\ninterface OperatorClass {\n  new (\n    transformId: string,\n    transformProto: PTransform,\n    context: OperatorContext,\n  ): IOperator;\n}\n\nconst operatorsByUrn: Map<string, OperatorConstructor> = new Map();","sourceCodeStart":113,"sourceCodeEnd":149,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/typescript/src/apache_beam/worker/operators.ts#L113-L149","documentation":"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.","triggerScenarios":"Thrown at sdks/typescript/src/apache_beam/worker/operators.ts:131 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","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."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}