{"record":{"id":"e582994334646ae6","repo":"apache/beam","slug":"unknown-s-s-pardotranslation","errorCode":null,"errorMessage":"Unknown %s: %s","messagePattern":"Unknown (.+?): (.+?)","errorType":"validation","errorClass":"java.lang.IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/ParDoTranslation.java","lineNumber":714,"sourceCode":"        return StateSpecs.combining(\n            (Coder) components.getCoder(stateSpec.getCombiningSpec().getAccumulatorCoderId()),\n            combineFn);\n\n      case MAP_SPEC:\n        return StateSpecs.map(\n            components.getCoder(stateSpec.getMapSpec().getKeyCoderId()),\n            components.getCoder(stateSpec.getMapSpec().getValueCoderId()));\n\n      case SET_SPEC:\n        return StateSpecs.set(components.getCoder(stateSpec.getSetSpec().getElementCoderId()));\n\n      case ORDERED_LIST_SPEC:\n        return StateSpecs.orderedList(\n            components.getCoder(stateSpec.getOrderedListSpec().getElementCoderId()));\n\n      case SPEC_NOT_SET:\n      default:\n        throw new IllegalArgumentException(\n            String.format(\"Unknown %s: %s\", RunnerApi.StateSpec.class.getName(), stateSpec));\n    }\n  }\n\n  public static String registerCoderOrThrow(SdkComponents components, Coder coder) {\n    try {\n      return components.registerCoder(coder);\n    } catch (IOException exc) {\n      throw new RuntimeException(\"Failure to register coder\", exc);\n    }\n  }\n\n  public static RunnerApi.TimerFamilySpec translateTimerFamilySpec(\n      TimerSpec timer,\n      SdkComponents components,\n      Coder<?> keyCoder,\n      Coder<BoundedWindow> windowCoder) {\n    return RunnerApi.TimerFamilySpec.newBuilder()","sourceCodeStart":696,"sourceCodeEnd":732,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/ParDoTranslation.java#L696-L732","documentation":"ParDoTranslation.stateSpecFromProto converts a RunnerApi.StateSpec oneof (BAG_SPEC, ORDERED_LIST_SPEC, COMBINING_SPEC, etc.) into the Java StateSpecs API. SPEC_NOT_SET or an unrecognized case means the proto carries no known state spec, so translation cannot proceed and throws this IllegalArgumentException.","triggerScenarios":"Translating a graph whose StateSpec message has the oneof unset (SPEC_NOT_SET) — e.g. a partially built or truncated proto, or a newer Beam writing a state spec variant this older SDK cannot map.","commonSituations":"Version-skew between the job-submission SDK and the runtime/expansion SDK; hand-crafted or mutated pipeline protos; corrupted pipeline JSON round-trips.","solutions":["Align Beam versions between graph construction and translation so all state spec variants are known","Inspect the RunnerApi proto and ensure the state spec oneof is set to a supported case (bag, map, set, combining, ordered list)","Rebuild the pipeline from source instead of reusing a saved/dumped proto"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":"if (stateSpec.getStateSpecCase() == RunnerApi.StateSpec.StateSpecCase.SPEC_NOT_SET) throw new IllegalArgumentException(\"state spec oneof unset\");","typeGuard":"boolean hasKnownStateSpec(RunnerApi.StateSpec s) { return s.getStateSpecCase() != RunnerApi.StateSpec.StateSpecCase.SPEC_NOT_SET; }","tryCatchPattern":"try { return ParDoTranslation.stateSpecFromProto(spec, components); } catch (IllegalArgumentException e) { log.error(\"state spec case {} unsupported\", spec.getStateSpecCase(), e); throw e; }","preventionTips":["Pin a single Beam version across all pipeline stages","Do not mutate generated pipeline protos","Regenerate graphs rather than caching serialized ones across upgrades"],"tags":["java","apache-beam","pardo","state-api"],"backgroundTag":"invalid-enum-value","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"}