apache/seatunnel · error · UnsupportedOperationException
Stripe source only supports batch jobs
Error message
Stripe source only supports batch jobs
What it means
StripeSource.getBoundedness returns BOUNDED only when the job runs in BATCH mode; in any other mode it throws UnsupportedOperationException. The Stripe reader is a simple cursor-paginated REST reader and has no continuous/streaming implementation.
Source
Thrown at seatunnel-connectors-v2/connector-http/connector-http-stripe/src/main/java/org/apache/seatunnel/connectors/seatunnel/stripe/source/StripeSource.java:81
CatalogTable.of(
TableIdentifier.of(PLUGIN_NAME, TablePath.DEFAULT),
tableSchema,
Collections.emptyMap(),
Collections.emptyList(),
null);
}
@Override
public String getPluginName() {
return PLUGIN_NAME;
}
@Override
public Boundedness getBoundedness() {
if (JobMode.BATCH.equals(jobContext.getJobMode())) {
return Boundedness.BOUNDED;
}
throw new UnsupportedOperationException("Stripe source only supports batch jobs");
}
@Override
public List<CatalogTable> getProducedCatalogTables() {
return Lists.newArrayList(catalogTable);
}
@Override
public AbstractSingleSplitReader<SeaTunnelRow> createReader(
SingleSplitReaderContext readerContext) {
return new StripeSourceReader(sourceParameter, readerContext);
}
@Override
public void setJobContext(JobContext jobContext) {
this.jobContext = jobContext;
}
}View on GitHub (pinned to cf67b549a7)
Solutions
- Set execution.mode = "BATCH" in the job env block
- Split streaming requirements: batch-sync Stripe data to a store, then stream from that store
- Use a different streaming-capable source connector for live data
Example fix
// before
env {
execution.mode = "STREAMING"
}
// after
env {
execution.mode = "BATCH"
} Defensive patterns
Strategy: validation
Validate before calling
if (!"BATCH".equals(jobEnv.get("execution.mode"))) {
throw new IllegalArgumentException("Stripe source requires execution.mode = BATCH");
} Try / catch
try { source.getBoundedness(); } catch (UnsupportedOperationException e) {
// switch job env to BATCH and resubmit
} Prevention
- Keep a single job-mode convention for Stripe ingestion pipelines
- Check connector docs for streaming support before reusing templates
- Add a pre-submit check that source boundedness matches job mode
When it happens
Trigger: Submitting a job with env { execution.mode = "STREAMING" } (or any non-BATCH JobMode) against a Stripe source triggers the throw when the framework calls getBoundedness.
Common situations: Developers reuse a streaming job config template and swap in a Stripe source, or migrate a batch job to streaming without changing the connector.
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
- Airtable source connector not support unbounded operation
- SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED
- '%s' source don't support off-line job.
- CONFIGURATION_FAILED
- Streaming mode requires a Primary Key in the schema of table
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/ecdc7869ac0067c4.
Report an issue: GitHub.