apache/beam · error

Encountered an Atomic type that is not currently supported b

Error message

Encountered an Atomic type that is not currently supported by RowCoder: ${atomicType}

What it means

ManagedRead.__init__ validates the `source` argument against the _READ_TRANSFORMS registry (case-insensitively) and raises ValueError when no matching identifier exists. Only a fixed set of managed read sources (e.g. iceberg, kafka, bigquery) is supported; anything else is rejected before any expansion service work starts.

Source

Thrown at sdks/typescript/src/apache_beam/coders/row_coder.ts:267

    switch (typeInfo.oneofKind) {
      case "atomicType":
        let atomicType: AtomicType = typeInfo.atomicType;
        switch (atomicType) {
          case AtomicType.INT16:
          case AtomicType.INT32:
          case AtomicType.INT64:
            return new VarIntCoder();
          // case AtomicType.BYTE:
          case AtomicType.BYTES:
            return new BytesCoder();
          // case AtomicType.FLOAT:
          // case AtomicType.DOUBLE:
          case AtomicType.STRING:
            return new StrUtf8Coder();
          case AtomicType.BOOLEAN:
            return new BoolCoder();
          default:
            throw new Error(
              `Encountered an Atomic type that is not currently supported by RowCoder: ${atomicType}`,
            );
        }
        break;
      case "arrayType":
        if (typeInfo.arrayType.elementType !== undefined) {
          return new IterableCoder(
            this.getCoderFromType(typeInfo.arrayType.elementType),
          );
        } else {
          throw new Error("ElementType missing on ArrayType");
        }
      // case "iterableType":
      // case "mapType":
      case "rowType":
        if (typeInfo.rowType.schema !== undefined) {
          return RowCoder.fromSchema(typeInfo.rowType.schema);
        } else {

View on GitHub (pinned to 12126d8942)

Solutions

  1. Use one of the supported sources listed in the error message (e.g. 'iceberg', 'kafka', 'bigquery').
  2. Fix spelling of the source name (matching is on the lowercased string).
  3. Upgrade apache-beam if the desired managed source was added in a newer release; otherwise use the non-managed connector or an external Java transform.

Example fix

// before
beam.ManagedRead(source='S3')
// after
beam.ManagedRead(source='iceberg')  # or kafka / bigquery
Defensive patterns

Strategy: validation

Validate before calling

from apache_beam.transforms.managed import ManagedRead
assert str(source).lower() in ManagedRead._READ_TRANSFORMS, f'{source} not supported; use {list(ManagedRead._READ_TRANSFORMS)}'

Type guard

def is_supported_source(source: str) -> bool:
    from apache_beam.transforms.managed import ManagedRead
    return str(source).lower() in ManagedRead._READ_TRANSFORMS

Try / catch

try:
    p | beam.ManagedRead(source=src, config=cfg)
except ValueError as e:
    logger.error('Bad managed source %r: %s', src, e)
    raise

Prevention

When it happens

Trigger: ManagedRead(source='s3'), ManagedRead(source='Ice Berg'), or any source string whose .lower() is not a key of _READ_TRANSFORMS.

Common situations: Typos or unsupported connectors (e.g. trying s3/jdbc when only iceberg/kafka/bigquery are supported); casing confusion is tolerated (lowercased) but wrong names are not; reading docs for a newer Beam that supports more sources.

Understand the failure class

Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.

Related errors


AI-assisted analysis of apache/beam@12126d8942 (2026-09-13). Data as JSON: /api/errors/5e3a7e5a076dd6ed. Report an issue: GitHub.