apache/seatunnel · error · UnsupportedOperationException

Airtable source connector not support unbounded operation

Error message

Airtable source connector not support unbounded operation

What it means

AirtableSource.getBoundedness returns BOUNDED only for BATCH jobs and throws UnsupportedOperationException for any unbounded (streaming) job, because the Airtable source can only read a table snapshot once. Streaming (unbounded) execution is not supported by design.

Source

Thrown at seatunnel-connectors-v2/connector-http/connector-http-airtable/src/main/java/org/apache/seatunnel/connectors/seatunnel/airtable/source/AirtableSource.java:70

            info.setUsePlaceholderReplacement(false);
            // Avoid NPE in HttpSourceReader.updateRequestParam for cursor pagination
            // (pageIndex is unused for cursor mode but referenced defensively).
            info.setPageIndex(0L);
            this.pageInfo = info;
        }
    }

    @Override
    public String getPluginName() {
        return PLUGIN_NAME;
    }

    @Override
    public Boundedness getBoundedness() {
        if (JobMode.BATCH.equals(jobContext.getJobMode())) {
            return Boundedness.BOUNDED;
        }
        throw new UnsupportedOperationException(
                "Airtable source connector not support unbounded operation");
    }

    @Override
    public AbstractSingleSplitReader<SeaTunnelRow> createReader(
            SingleSplitReaderContext readerContext) throws Exception {
        return new AirtableSourceReader(
                airtableSourceParameter,
                readerContext,
                deserializationSchema,
                jsonField,
                contentField,
                pageInfo,
                requestIntervalMs,
                rateLimitBackoffMs,
                rateLimitMaxRetries);
    }
}

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Set job mode to batch: env { job.mode = "BATCH" } in the config.
  2. Schedule the batch job periodically (cron/airflow) to emulate continuous sync.
  3. Use a different connector that supports streaming if incremental sync is required.

Example fix

// before
env { job.mode = "STREAMING" }
// after
env { job.mode = "BATCH" }
Defensive patterns

Strategy: validation

Validate before calling

// Hocon check before submit
// env { job.mode = "BATCH" }  # required for the Airtable source

Prevention

When it happens

Trigger: Submitting a job with 'env { mode = "streaming" }' (or job.mode=STREAMING) that uses the Airtable source connector.

Common situations: Users who want continuous Airtable sync in streaming mode; copy-pasting a streaming job template while swapping in the Airtable source.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/4c85765b4dec7d55. Report an issue: GitHub.