{"record":{"id":"d1231d848d8cae9a","repo":"apache/beam","slug":"unknown-timestamp-transform-case-s","errorCode":null,"errorMessage":"Unknown timestamp transform case: %s","messagePattern":"Unknown timestamp transform case: (.+?)","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/TriggerTranslation.java","lineNumber":258,"sourceCode":"      case AFTER_PROCESSING_TIME:\n        AfterProcessingTime trigger = AfterProcessingTime.pastFirstElementInPane();\n        for (RunnerApi.TimestampTransform transform :\n            triggerProto.getAfterProcessingTime().getTimestampTransformsList()) {\n          switch (transform.getTimestampTransformCase()) {\n            case ALIGN_TO:\n              trigger =\n                  trigger.alignedTo(\n                      Duration.millis(transform.getAlignTo().getPeriod()),\n                      new Instant(transform.getAlignTo().getOffset()));\n              break;\n            case DELAY:\n              trigger = trigger.plusDelayOf(Duration.millis(transform.getDelay().getDelayMillis()));\n              break;\n            case TIMESTAMPTRANSFORM_NOT_SET:\n              throw new IllegalArgumentException(\n                  String.format(\"Required field 'timestamp_transform' not set in %s\", transform));\n            default:\n              throw new IllegalArgumentException(\n                  String.format(\n                      \"Unknown timestamp transform case: %s\",\n                      transform.getTimestampTransformCase()));\n          }\n        }\n        return trigger;\n      case AFTER_SYNCHRONIZED_PROCESSING_TIME:\n        return AfterSynchronizedProcessingTime.ofFirstElement();\n      case ALWAYS:\n        return new ReshuffleTrigger();\n      case ELEMENT_COUNT:\n        return AfterPane.elementCountAtLeast(triggerProto.getElementCount().getElementCount());\n      case NEVER:\n        return Never.ever();\n      case OR_FINALLY:\n        return fromProto(triggerProto.getOrFinally().getMain())\n            .orFinally((OnceTrigger) fromProto(triggerProto.getOrFinally().getFinally()));\n      case REPEAT:","sourceCodeStart":240,"sourceCodeEnd":276,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/TriggerTranslation.java#L240-L276","documentation":"TriggerTranslation.fromProto switches over the TimestampTransformCase of the incoming proto. If the case is set but is not one of the known cases (and not TIMESTAMPTRANSFORM_NOT_SET), the default branch throws an IllegalArgumentException with the actual case name.","triggerScenarios":"Deserializing a TimestampTransform whose oneof case is unrecognized by the running SDK version — typically a case introduced in a newer Beam proto.","commonSituations":"Version skew between the pipeline producer (newer Beam) and the SDK translating it; custom/forked proto definitions.","solutions":["Upgrade the SDK to a version that recognizes the new TimestampTransformCase","Re-export the pipeline with a Beam version compatible with this SDK","Log the case name and map it manually to an existing transform if a forward-compatible migration is needed"],"exampleFix":"// before: proto uses case added in Beam 2.60 read by Beam 2.50\n// after: align producer and consumer SDK versions, or upgrade the reader","handlingStrategy":"type-guard","validationCode":"TimestampTransform.TimestampTransformCase c = transform.getTimestampTransformCase();\nif (c != TimestampTransformCase.TRUNCATE && c != TimestampTransformCase.ALIGNTO\n    && c != TimestampTransformCase.TIMESTAMPTRANSFORM_NOT_SET) {\n  throw new IllegalStateException(\"Unknown case, upgrade SDK: \" + c);\n}","typeGuard":"boolean isKnownCase(TimestampTransform t) {\n  switch (t.getTimestampTransformCase()) {\n    case TRUNCATE: case ALIGNTO: case TIMESTAMPTRANSFORM_NOT_SET: return true;\n    default: return false;\n  }\n}","tryCatchPattern":"try {\n  TriggerTranslation.fromProto(triggerProto);\n} catch (IllegalArgumentException e) {\n  // upgrade SDK or remap the unknown case\n}","preventionTips":["Align Beam versions across pipeline producers and consumers","When upgrading Beam, re-export stored pipeline templates"],"tags":["java","beam","triggers","enum"],"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-14T21:17:11.552Z"}