{"record":{"id":"4e631821e0ebf2f9","repo":"apache/beam","slug":"unsupported-windowing-output-time-windowingstrategy-4e6318","errorCode":null,"errorMessage":"Unsupported windowing output time: ${windowingStrategy}","messagePattern":"Unsupported windowing output time: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"sdks/typescript/src/apache_beam/worker/operators.ts","lineNumber":446,"sourceCode":"  windowCoder: Coder<Window>;\n\n  // Use a Map for LRU ordering: JavaScript Maps preserve insertion order,\n  // so we can implement LRU by deleting and re-inserting on access.\n  groups: Map<string, A>;\n  maxKeys: number = 10000;\n\n  static checkSupportsWindowing(\n    windowingStrategy: runnerApi.WindowingStrategy,\n  ) {\n    if (\n      windowingStrategy.mergeStatus !== runnerApi.MergeStatus_Enum.NON_MERGING\n    ) {\n      throw new Error(\"Unsupported non-merging WindowFn: \" + windowingStrategy);\n    }\n    if (\n      windowingStrategy.outputTime !== runnerApi.OutputTime_Enum.END_OF_WINDOW\n    ) {\n      throw new Error(\n        \"Unsupported windowing output time: \" + windowingStrategy,\n      );\n    }\n  }\n\n  constructor(\n    transformId: string,\n    transform: PTransform,\n    context: OperatorContext,\n  ) {\n    super(transformId, transform, context);\n    const inputPc =\n      context.descriptor.pcollections[\n        onlyElement(Object.values(transform.inputs))\n      ];\n    this.keyCoder = context.pipelineContext.getCoder(\n      context.descriptor.coders[inputPc.coderId].componentCoderIds[0],\n    );","sourceCodeStart":428,"sourceCodeEnd":464,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/typescript/src/apache_beam/worker/operators.ts#L428-L464","documentation":"The second guard in checkSupportsWindowing: the operator requires outputTime == END_OF_WINDOW so timestamps assigned to combined outputs are deterministic, but the strategy uses another OutputTime_Enum (END_OF_TIMESTAMP or START_OF_WINDOW). The windowingStrategy's output time configuration is the input at fault.","triggerScenarios":"Thrown at sdks/typescript/src/apache_beam/worker/operators.ts:446 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set the windowing strategy's output time to END_OF_WINDOW (e.g. Window.into(...).withOutputTimeFn(OutputTimeFns.endOfWindow())) or use default fixed windows.","Avoid withAllowedLateness/custom timestamp policies that change output time when using precombine.","If another output time is required, skip the precombine operator."],"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"}