{"record":{"id":"47ab8059850bd268","repo":"apache/beam","slug":"unknown-or-unsupported-windowfn","errorCode":null,"errorMessage":"Unknown or unsupported WindowFn: ","messagePattern":"Unknown or unsupported WindowFn: ","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/WindowingStrategyTranslation.java","lineNumber":388,"sourceCode":"        return FixedWindows.of(Duration.millis(Durations.toMillis(fixedParams.getSize())))\n            .withOffset(Duration.millis(Timestamps.toMillis(fixedParams.getOffset())));\n      } else if (s.equals(getUrn(SlidingWindowsPayload.Enum.PROPERTIES))) {\n        SlidingWindowsPayload slidingParams =\n            SlidingWindowsPayload.parseFrom(windowFnSpec.getPayload());\n        return SlidingWindows.of(Duration.millis(Durations.toMillis(slidingParams.getSize())))\n            .every(Duration.millis(Durations.toMillis(slidingParams.getPeriod())))\n            .withOffset(Duration.millis(Timestamps.toMillis(slidingParams.getOffset())));\n      } else if (s.equals(getUrn(SessionWindowsPayload.Enum.PROPERTIES))) {\n        SessionWindowsPayload sessionParams =\n            SessionWindowsPayload.parseFrom(windowFnSpec.getPayload());\n        return Sessions.withGapDuration(\n            Duration.millis(Durations.toMillis(sessionParams.getGapSize())));\n      } else if (s.equals(SERIALIZED_JAVA_WINDOWFN_URN)) {\n        return (WindowFn<?, ?>)\n            SerializableUtils.deserializeFromByteArray(\n                windowFnSpec.getPayload().toByteArray(), \"WindowFn\");\n      } else {\n        throw new IllegalArgumentException(\n            \"Unknown or unsupported WindowFn: \" + windowFnSpec.getUrn());\n      }\n    } catch (InvalidProtocolBufferException e) {\n      throw new IllegalArgumentException(\n          String.format(\n              \"%s for %s with URN %s did not contain expected proto message for payload\",\n              FunctionSpec.class.getSimpleName(),\n              WindowFn.class.getSimpleName(),\n              windowFnSpec.getUrn()),\n          e);\n    }\n  }\n}\n","sourceCodeStart":370,"sourceCodeEnd":402,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/WindowingStrategyTranslation.java#L370-L402","documentation":"Thrown by WindowingStrategyTranslation.windowFnFromProto when the FunctionSpec URN of a serialized WindowFn is neither a recognized built-in URN (fixed, sliding, sessions, etc.) nor the SERIALIZED_JAVA_WINDOWFN_URN payload form. The decoder has no strategy to reconstruct a WindowFn from that URN.","triggerScenarios":"Reading a pipeline proto whose window_fn FunctionSpec carries an unknown/unsupported URN — e.g. a URN added in a newer Beam version, a runner-specific URN, or a corrupted URN string.","commonSituations":"Cross-version pipeline portability (new windowing type with an older reader); hand-edited or transformed pipeline protos; runners that only support a subset of built-in window functions.","solutions":["Upgrade the reading runner/SDK to a version that recognizes the WindowFn URN.","Confirm the windowing used in the pipeline is a supported built-in (FixedWindows, SlidingWindows, Sessions, GlobalWindows) or a serializable Java WindowFn.","If it is a custom WindowFn, ensure it was serialized under SERIALIZED_JAVA_WINDOWFN_URN with a valid payload.","Inspect windowFnSpec.getUrn() in a debugger/logs to identify exactly which URN is unsupported."],"exampleFix":"// before: custom URN unknown to reader\n// after: force Java-serialized custom WindowFn handling\nWindowFn<?, ?> wf = WindowingStrategyTranslation.windowFnFromProto(\n    FunctionSpecs.serializeJavaWindowFn(myCustomWindowFn));","handlingStrategy":"validation","validationCode":"String urn = windowFnSpec.getUrn();\nboolean supported = org.apache.beam.sdk.util.construction.WindowingStrategies.FIXED_WINDOWS_URN.equals(urn)\n || org.apache.beam.sdk.util.construction.WindowingStrategies.SLIDING_WINDOWS_URN.equals(urn)\n || org.apache.beam.sdk.util.construction.WindowingStrategies.SESSION_WINDOWS_URN.equals(urn)\n || org.apache.beam.sdk.util.construction.WindowingStrategies.SERIALIZED_JAVA_WINDOWFN_URN.equals(urn);\nif (!supported) throw new IllegalArgumentException(\"Unsupported WindowFn URN for this reader: \" + urn);","typeGuard":"boolean isKnownWindowFnUrn(String urn) { return urn != null && KNOWN_WINDOWFN_URNS.contains(urn); }","tryCatchPattern":"try { wf = WindowingStrategyTranslation.windowFn(windowingStrategyProto); } catch (IllegalArgumentException e) { log.error(\"Unsupported WindowFn URN: {}\", urn, e); throw e; }","preventionTips":["Stick to built-in window functions (FixedWindows/SlidingWindows/Sessions/GlobalWindows) for portable pipelines","Serialize custom WindowFns so they use SERIALIZED_JAVA_WINDOWFN_URN","Match reader Beam version to the producer's version"],"tags":["java","beam","windowing","urn","unsupported"],"backgroundTag":"unsupported-operation","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}