{"record":{"id":"56d5d2c4e1c0d203","repo":"apache/beam","slug":"unable-to-infer-a-coder-for-orderedliststate-and-no-coder","errorCode":null,"errorMessage":"Unable to infer a coder for OrderedListState and no Coder was specified. Please set a coder by either invoking StateSpecs.orderedListState(Coder<K> elemCoder), specifying a schema,  or by registering the coder in the Pipeline's CoderRegistry.","messagePattern":"Unable to infer a coder for OrderedListState and no Coder was specified\\. Please set a coder by either invoking StateSpecs\\.orderedListState\\(Coder<K> elemCoder\\), specifying a schema,  or by registering the coder in the Pipeline's CoderRegistry\\.","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"sdks/java/core/src/main/java/org/apache/beam/sdk/state/StateSpecs.java","lineNumber":701,"sourceCode":"    }\n\n    @Override\n    public <ResultT> ResultT match(Cases<ResultT> cases) {\n      return cases.dispatchOrderedList(elemCoder);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    @Override\n    public void offerCoders(Coder[] coders) {\n      if (this.elemCoder == null && coders[0] != null) {\n        this.elemCoder = (Coder<T>) coders[0];\n      }\n    }\n\n    @Override\n    public void finishSpecifying() {\n      if (elemCoder == null) {\n        throw new IllegalStateException(\n            \"Unable to infer a coder for OrderedListState and no Coder\"\n                + \" was specified. Please set a coder by either invoking\"\n                + \" StateSpecs.orderedListState(Coder<K> elemCoder), specifying a schema,  or by registering the\"\n                + \" coder in the Pipeline's CoderRegistry.\");\n      }\n    }\n\n    @Override\n    public boolean equals(Object obj) {\n      if (obj == this) {\n        return true;\n      }\n\n      if (!(obj instanceof OrderedListStateSpec)) {\n        return false;\n      }\n\n      OrderedListStateSpec<?> that = (OrderedListStateSpec<?>) obj;","sourceCodeStart":683,"sourceCodeEnd":719,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/core/src/main/java/org/apache/beam/sdk/state/StateSpecs.java#L683-L719","documentation":"An OrderedListState spec created without an element coder and without a schema cannot infer one at finishSpecifying time. OrderedListStateSpec.finishSpecifying() throws IllegalStateException when elemCoder is null.","triggerScenarios":"Calling StateSpecs.orderedListState() with no coder where element coder inference fails and no schema was specified.","commonSituations":"Ordered lists of custom record types without registered coders; using schema-based ordered lists but forgetting to supply either coder or schema.","solutions":["Pass an explicit coder: StateSpecs.orderedListState(elemCoder).","Specify a schema for the element type so a coder can be derived.","Register a coder for the element type K in the pipeline's CoderRegistry."],"exampleFix":"// before\nOrderedListStateSpec<MyRecord> spec = StateSpecs.orderedListState();\n// after\nOrderedListStateSpec<MyRecord> spec = StateSpecs.orderedListState(myRecordCoder);","handlingStrategy":"validation","validationCode":"if (elemCoder == null && schema == null) {\n  throw new IllegalStateException(\"Supply StateSpecs.orderedListState(elemCoder) or a schema for the element type\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  spec = StateSpecs.orderedListState();\n} catch (IllegalStateException e) {\n  if (e.getMessage().contains(\"OrderedListState\")) {\n    spec = StateSpecs.orderedListState(elemCoder);\n  } else throw e;\n}","preventionTips":["Provide either an explicit coder or a schema for ordered-list elements","Register element coders in the CoderRegistry","Check that element types are schema/coder compatible"],"tags":["java","apache-beam","state","coder-inference"],"backgroundTag":"missing-required-config","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"}