{"record":{"id":"1a3a5e31d6401085","repo":"apache/beam","slug":"encountered-unknown-atomictype-protofieldtype-getatomictype","errorCode":null,"errorMessage":"Encountered unknown AtomicType: +protoFieldType.getAtomicType()","messagePattern":"Encountered unknown AtomicType: \\+protoFieldType\\.getAtomicType\\(\\)","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/SchemaTranslation.java","lineNumber":380,"sourceCode":"            return FieldType.of(TypeName.INT16);\n          case INT32:\n            return FieldType.of(TypeName.INT32);\n          case INT64:\n            return FieldType.of(TypeName.INT64);\n          case FLOAT:\n            return FieldType.of(TypeName.FLOAT);\n          case DOUBLE:\n            return FieldType.of(TypeName.DOUBLE);\n          case STRING:\n            return FieldType.of(TypeName.STRING);\n          case BOOLEAN:\n            return FieldType.of(TypeName.BOOLEAN);\n          case BYTES:\n            return FieldType.of(TypeName.BYTES);\n          case UNSPECIFIED:\n            throw new IllegalArgumentException(\"Encountered UNSPECIFIED AtomicType\");\n          default:\n            throw new IllegalArgumentException(\n                \"Encountered unknown AtomicType: \" + protoFieldType.getAtomicType());\n        }\n      case ROW_TYPE:\n        return FieldType.row(schemaFromProto(protoFieldType.getRowType().getSchema()));\n      case ARRAY_TYPE:\n        return FieldType.array(fieldTypeFromProto(protoFieldType.getArrayType().getElementType()));\n      case ITERABLE_TYPE:\n        return FieldType.iterable(\n            fieldTypeFromProto(protoFieldType.getIterableType().getElementType()));\n      case MAP_TYPE:\n        return FieldType.map(\n            fieldTypeFromProto(protoFieldType.getMapType().getKeyType()),\n            fieldTypeFromProto(protoFieldType.getMapType().getValueType()));\n      case LOGICAL_TYPE:\n        SchemaApi.LogicalType logicalType = protoFieldType.getLogicalType();\n        String urn = logicalType.getUrn();\n        Class<? extends LogicalType<?, ?>> logicalTypeClass = STANDARD_LOGICAL_TYPES.get(urn);\n        if (logicalTypeClass != null) {","sourceCodeStart":362,"sourceCodeEnd":398,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/SchemaTranslation.java#L362-L398","documentation":"The default branch of the AtomicType switch throws IllegalArgumentException 'Encountered unknown AtomicType: ...' when the proto contains an atomic type value this SDK does not recognize. This is forward-compatibility protection against newer enum values.","triggerScenarios":"Decoding a schema proto produced by a newer Beam version (or another runtime) that uses an AtomicType enum value unknown to the current SDK.","commonSituations":"Beam version skew: writer on Beam 2.x-newer, reader on older SDK; custom forks adding enum values; mixed-version streaming pipelines.","solutions":["Upgrade the reading SDK to the same or newer Beam version that knows the AtomicType.","Pin matching Beam versions across writer and reader in the pipeline.","If immediate upgrade is impossible, re-encode the data with supported field types.","Catch the IllegalArgumentException during decode to isolate/redirect bad records rather than failing the whole pipeline."],"exampleFix":"// build.gradle (reader)\n// before: implementation 'org.apache.beam:beam-sdks-java-core:2.30.0'\n// after:  implementation 'org.apache.beam:beam-sdks-java-core:2.61.0'","handlingStrategy":"try-catch","validationCode":"int v = protoFieldType.getAtomicTypeValue(); // or ordinal via descriptor\nif (protoFieldType.getAtomicType().getDescriptor().getOptions()\n    .hasDeprecated()) { /* handle */ }","typeGuard":null,"tryCatchPattern":"try {\n  return fieldTypeFromProto(protoFieldType);\n} catch (IllegalArgumentException e) {\n  if (e.getMessage().startsWith(\"Encountered unknown AtomicType\")) {\n    return fallbackFieldType; // or rethrow with version info\n  }\n  throw e;\n}","preventionTips":["Pin identical Beam versions for writers and readers.","Upgrade the reader SDK when new AtomicType values appear upstream.","Test schema compatibility in CI across supported Beam versions.","Avoid custom forks of SchemaApi protos."],"tags":["java","apache-beam","protobuf","version-skew"],"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-14T16:17:12.679Z"}