{"record":{"id":"33b21686437cbc84","repo":"apache/beam","slug":"unknown-time-domain","errorCode":null,"errorMessage":"Unknown time domain","messagePattern":"Unknown time domain","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":751,"sourceCode":"        .setTimeDomain(translateTimeDomain(timer.getTimeDomain()))\n        .setTimerFamilyCoderId(\n            registerCoderOrThrow(components, Timer.Coder.of(keyCoder, windowCoder)))\n        .build();\n  }\n\n  public static RunnerApi.TimeDomain.Enum translateTimeDomain(TimeDomain timeDomain) {\n    switch (timeDomain) {\n      case EVENT_TIME:\n        return RunnerApi.TimeDomain.Enum.EVENT_TIME;\n      case PROCESSING_TIME:\n        return RunnerApi.TimeDomain.Enum.PROCESSING_TIME;\n      case SYNCHRONIZED_PROCESSING_TIME:\n        throw new IllegalArgumentException(\n            String.format(\n                \"%s is not permitted for user timers\",\n                TimeDomain.SYNCHRONIZED_PROCESSING_TIME.name()));\n      default:\n        throw new IllegalArgumentException(\"Unknown time domain\");\n    }\n  }\n\n  public static FunctionSpec translateDoFn(\n      DoFn<?, ?> fn,\n      TupleTag<?> tag,\n      Map<String, PCollectionView<?>> sideInputMapping,\n      DoFnSchemaInformation doFnSchemaInformation,\n      SdkComponents components) {\n    return FunctionSpec.newBuilder()\n        .setUrn(CUSTOM_JAVA_DO_FN_URN)\n        .setPayload(\n            ByteString.copyFrom(\n                SerializableUtils.serializeToByteArray(\n                    DoFnWithExecutionInformation.of(\n                        fn, tag, sideInputMapping, doFnSchemaInformation))))\n        .build();\n  }","sourceCodeStart":733,"sourceCodeEnd":769,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/ParDoTranslation.java#L733-L769","documentation":"This is the switch default in timerFamilyTimeDomainToProto: if the TimeDomain enum value is neither EVENT_TIME, PROCESSING_TIME, nor SYNCHRONIZED_PROCESSING_TIME, Beam has no proto mapping and throws a bare IllegalArgumentException('Unknown time domain'). It guards against future/unknown enum constants.","triggerScenarios":"Translating a timer family spec whose TimeDomain is null or an unrecognized enum constant (e.g. a newer Beam adding a TimeDomain that an older translating SDK cannot map, or a programmatically built spec passing null).","commonSituations":"Version-skew between SDK components; reflection-based or generated code passing an unexpected value; custom TimeDomain implementations.","solutions":["Ensure the timer's TimeDomain is a valid supported constant: EVENT_TIME or PROCESSING_TIME","Upgrade all Beam SDK modules to the same version so enum constants match","Null-check the TimeDomain before building the TimerFamilySpec"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"Objects.requireNonNull(timeDomain, \"timeDomain must not be null\");\nPreconditions.checkArgument(timeDomain == TimeDomain.EVENT_TIME || timeDomain == TimeDomain.PROCESSING_TIME, \"unsupported time domain %s\", timeDomain);","typeGuard":"boolean isValidTimeDomain(TimeDomain d) { return d != null && (d == TimeDomain.EVENT_TIME || d == TimeDomain.PROCESSING_TIME || d == TimeDomain.SYNCHRONIZED_PROCESSING_TIME); }","tryCatchPattern":"try { ParDoTranslation.timerFamilyTimeDomainToProto(domain); } catch (IllegalArgumentException e) { /* default the timer to EVENT_TIME */ }","preventionTips":["Use the same Beam version everywhere to avoid unknown enum constants","Null-check TimeDomain before building TimerFamilySpec","Avoid reflection-based timer construction"],"tags":["java","apache-beam","timers"],"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"}