{"record":{"id":"b3cfe8bf8b957f73","repo":"apache/beam","slug":"unknown-allow-list-version","errorCode":null,"errorMessage":"Unknown allow-list version","messagePattern":"Unknown allow-list version","errorType":"exception","errorClass":"java.lang.IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"sdks/java/expansion-service/src/main/java/org/apache/beam/sdk/expansion/service/JavaClassLookupTransformProvider.java","lineNumber":87,"sourceCode":" * and builder methods.\n *\n * @param <InputT> input {@link PInput} type of the transform\n * @param <OutputT> output {@link POutput} type of the transform\n */\n@SuppressFBWarnings(\"UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD\")\nclass JavaClassLookupTransformProvider<InputT extends PInput, OutputT extends POutput>\n    implements TransformProvider<PInput, POutput> {\n\n  public static final String ALLOW_LIST_VERSION = \"v1\";\n\n  public static final Pattern FIELD_NAME_IGNORE_PATTERN = Pattern.compile(\"ignore[0-9]+\");\n\n  private static final SchemaRegistry SCHEMA_REGISTRY = SchemaRegistry.createDefault();\n  private final AllowList allowList;\n\n  public JavaClassLookupTransformProvider(AllowList allowList) {\n    if (!allowList.getVersion().equals(ALLOW_LIST_VERSION)) {\n      throw new IllegalArgumentException(\"Unknown allow-list version\");\n    }\n    this.allowList = allowList;\n  }\n\n  @SuppressWarnings(\"argument\")\n  @Override\n  public PTransform<PInput, POutput> getTransform(FunctionSpec spec, PipelineOptions options) {\n    JavaClassLookupPayload payload;\n    try {\n      payload = JavaClassLookupPayload.parseFrom(spec.getPayload());\n    } catch (InvalidProtocolBufferException e) {\n      throw new IllegalArgumentException(\n          \"Invalid payload type for URN \" + getUrn(ExpansionMethods.Enum.JAVA_CLASS_LOOKUP), e);\n    }\n\n    String className = payload.getClassName();\n    try {\n      AllowedClass allowlistClass = allowList.getAllowedClass(className);","sourceCodeStart":69,"sourceCodeEnd":105,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/expansion-service/src/main/java/org/apache/beam/sdk/expansion/service/JavaClassLookupTransformProvider.java#L69-L105","documentation":"JavaClassLookupTransformProvider's constructor validates that the provided AllowList proto's version equals the ALLOW_LIST_VERSION this provider understands; otherwise it throws IllegalArgumentException('Unknown allow-list version'). This guards against allow-list formats the provider cannot interpret.","triggerScenarios":"Constructing JavaClassLookupTransformProvider with an AllowList whose getVersion() differs from the provider's compiled-in ALLOW_LIST_VERSION — e.g., allow-list file generated by a different Beam version.","commonSituations":"Expansion service and allow-list JSON/proto produced by mismatched Beam versions; hand-edited allow-list adding a version field; upgraded service still loading an old allow-list file.","solutions":["Regenerate the allow-list with the same Beam version as the expansion service","Upgrade the expansion service jar so ALLOW_LIST_VERSION matches the allow-list file","Inspect the allow-list file's version field and correct it to the expected constant","Remove a stale/hand-edited version field so defaults apply"],"exampleFix":"// before (allowlist.yaml)\nversion: 2\nallowedClasses: [...]\n// after\nversion: 1   # matches the service's ALLOW_LIST_VERSION\nallowedClasses: [...]","handlingStrategy":"validation","validationCode":"AllowList al = parseAllowList(file);\nif (!al.getVersion().equals(expectedVersion)) { throw new IllegalStateException(\"Allow-list version \" + al.getVersion() + \" unsupported\"); }","typeGuard":null,"tryCatchPattern":"try { provider = new JavaClassLookupTransformProvider(allowList); } catch (IllegalArgumentException e) { if (e.getMessage().equals(\"Unknown allow-list version\")) { /* regenerate allow-list */ } throw e; }","preventionTips":["Regenerate the allow-list whenever the expansion service Beam version changes","Do not hand-edit the version field in allow-list files","Verify version at service startup before wiring the provider"],"tags":["java","beam","allowlist"],"backgroundTag":"unsupported-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"}