{"record":{"id":"4e1a1be4ecf96d99","repo":"apache/beam","slug":"unknown-trigger-case-s","errorCode":null,"errorMessage":"Unknown trigger case: %s","messagePattern":"Unknown trigger 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":284,"sourceCode":"        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:\n        return Repeatedly.forever(fromProto(triggerProto.getRepeat().getSubtrigger()));\n      case DEFAULT:\n        return DefaultTrigger.of();\n      case TRIGGER_NOT_SET:\n        throw new IllegalArgumentException(\n            String.format(\"Required field 'trigger' not set in %s\", triggerProto));\n      default:\n        throw new IllegalArgumentException(\n            String.format(\"Unknown trigger case: %s\", triggerProto.getTriggerCase()));\n    }\n  }\n\n  private static List<Trigger> protosToTriggers(List<RunnerApi.Trigger> triggers) {\n    List<Trigger> result = Lists.newArrayList();\n    for (RunnerApi.Trigger trigger : triggers) {\n      result.add(fromProto(trigger));\n    }\n    return result;\n  }\n\n  // Do not instantiate\n  private TriggerTranslation() {}\n}\n","sourceCodeStart":266,"sourceCodeEnd":300,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/TriggerTranslation.java#L266-L300","documentation":"TriggerTranslation.fromProto switches over triggerProto.getTriggerCase(); the default branch throws an IllegalArgumentException for any trigger case that the current SDK does not recognize, including newly introduced proto cases.","triggerScenarios":"Reading a pipeline proto whose Trigger oneof holds a case added in a newer Beam version than the SDK performing translation.","commonSituations":"Beam version skew between pipeline producers and consumers; custom proto extensions; running an older SDK against pipelines from Flink runner JobGraphs or templates generated by newer Beam.","solutions":["Upgrade the SDK to one supporting the unknown trigger case","Rebuild/re-export the pipeline with a Beam version matching the reading SDK","Check triggerProto.getTriggerCase() against supported cases before invoking fromProto"],"exampleFix":"// before: producer Beam 2.60 emits new trigger case, reader Beam 2.50\n// after: upgrade reader SDK or regenerate pipeline with Beam 2.50","handlingStrategy":"type-guard","validationCode":"RunnerApi.Trigger.TriggerCase c = triggerProto.getTriggerCase();\nif (c == RunnerApi.Trigger.TriggerCase.TRIGGER_NOT_SET) {\n  throw new IllegalStateException(\"No trigger set\");\n} // additionally verify c is one of the cases your SDK version supports","typeGuard":"boolean isSupportedTriggerCase(RunnerApi.Trigger t) {\n  switch (t.getTriggerCase()) {\n    case AFTER_ALL: case AFTER_EACH: case AFTER_FIRST: case AFTER_END_OF_WINDOW:\n    case ELEMENT_COUNT: case NEVER: case OR_FINALLY: case ALWAYS: case REPEAT: case DEFAULT:\n      return true;\n    default: return false;\n  }\n}","tryCatchPattern":"try {\n  TriggerTranslation.fromProto(triggerProto);\n} catch (IllegalArgumentException e) {\n  // unknown trigger case: upgrade SDK or remap\n}","preventionTips":["Keep all Beam SDK versions in the pipeline lifecycle aligned","Audit stored pipeline templates after Beam upgrades"],"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"}