{"record":{"id":"972a9c3de8abae3f","repo":"apache/beam","slug":"ephemeral-coder","errorCode":null,"errorMessage":"Ephemeral coder.","messagePattern":"Ephemeral coder\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"sdks/typescript/src/apache_beam/coders/row_coder.ts","lineNumber":305,"sourceCode":"        }\n        break;\n      case \"logicalType\":\n        const logicalTypeInfo = logicalTypes.get(typeInfo.logicalType.urn);\n        if (logicalTypeInfo !== undefined) {\n          const reprCoder = this.getCoderFromType(\n            typeInfo.logicalType.representation!,\n          );\n          return {\n            encode: (element: any, writer: Writer, context: Context) =>\n              reprCoder.encode(\n                logicalTypeInfo.toRepr(element),\n                writer,\n                context,\n              ),\n            decode: (reader: Reader, context: Context) =>\n              logicalTypeInfo.fromRepr(reprCoder.decode(reader, context)),\n            toProto: (pipelineContext: ProtoContext) => {\n              throw new Error(\"Ephemeral coder.\");\n            },\n          };\n        } else {\n          throw new Error(`Unknown logical type: ${typeInfo.logicalType.urn}`);\n        }\n        break;\n      default:\n        throw new Error(\n          `Encountered a type that is not currently supported by RowCoder: ${JSON.stringify(\n            t,\n          )}`,\n        );\n    }\n  }\n\n  static fromSchema(schema: Schema): RowCoder {\n    return new RowCoder(schema);\n  }","sourceCodeStart":287,"sourceCodeEnd":323,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/typescript/src/apache_beam/coders/row_coder.ts#L287-L323","documentation":"This is a sentinel error from the toProto method of an ad-hoc coder synthesized for a logical type. The coder wraps a representation coder with toRepr/fromRepr conversions at encode/decode time, but it cannot serialize itself back to a coder proto; asking it for its proto (e.g. when the pipeline is translated) raises this guard. The input at fault is the logicalType field being converted to a pipeline proto, not any data element.","triggerScenarios":"Thrown at sdks/typescript/src/apache_beam/coders/row_coder.ts:305 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Avoid code paths that call toProto on coders derived from logical types; these ephemeral coders only support encode/decode within an already-materialized RowCoder.","Register the logical type's proto urn and representation in the logicalTypes registry so a proto-expressible coder can be produced instead.","If you control the pipeline construction, pre-compute the coder protos before wrapping logical types."],"exampleFix":null,"handlingStrategy":"validation","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"}