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
- Set job mode to batch: env { job.mode = "BATCH" } in the config.
- Schedule the batch job periodically (cron/airflow) to emulate continuous sync.
- 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
- Always set job.mode = BATCH with the Airtable source
- Use a scheduler for periodic sync instead of streaming
- Review connector docs for supported boundedness before choosing job mode
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
- Stripe source only supports batch jobs
- Operator %s requires an expectValue, but expectValue is null
- %s does not support replacing comments
- Not implemented
- '%s' source don't support off-line job.
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/4c85765b4dec7d55.
Report an issue: GitHub.