apache/seatunnel · error · IotdbConnectorException
CommonErrorCodeDeprecated.UNSUPPORTED_OPERATION
CommonErrorCodeDeprecated.UNSUPPORTED_OPERATION
Error message
Unsupported handleSplitRequest: %d
What it means
Thrown by handleSplitRequest when a reader asks the split enumerator to assign a split on demand. This enumerator assigns splits proactively (push-based) and does not support reader-initiated requests, so any such request is an unsupported operation and fails fast with the subtaskId in the message.
Source
Thrown at seatunnel-connectors-v2/connector-iotdb-v2/src/main/java/org/apache/seatunnel/connectors/seatunnel/iotdbv2/source/IoTDBv2SourceSplitEnumerator.java:285
}
private static int getSplitOwner(int currentAssignCount, int numReaders) {
return currentAssignCount % numReaders;
}
@Override
public void notifyCheckpointComplete(long checkpointId) {
// nothing to do
}
@Override
public void close() {
// nothing to do
}
@Override
public void handleSplitRequest(int subtaskId) {
throw new IotdbConnectorException(
CommonErrorCodeDeprecated.UNSUPPORTED_OPERATION,
String.format("Unsupported handleSplitRequest: %d", subtaskId));
}
}
View on GitHub (pinned to cf67b549a7)
Solutions
- Don't call handleSplitRequest against IoTDB source; rely on the enumerator's proactive assignment
- If you see this from stock readers, check SeaTunnel/IoTDB connector version compatibility and upgrade the connector
- Adjust source parallelism so reader count matches split count and readers don't need to request more splits
- If implementing custom logic, override/handle splits via the assignment callback instead
Defensive patterns
Strategy: try-catch
Try / catch
// reader side
try {
context.sendSplitRequest();
} catch (IotdbConnectorException e) {
if (e.getSeaTunnelErrorCode().equals(CommonErrorCodeDeprecated.UNSUPPORTED_OPERATION)) {
// this enumerator assigns splits proactively; wait for assigned splits instead
} else {
throw e;
}
} Prevention
- Use the IoTDB source as designed: splits arrive via assignment, not on-demand requests
- Keep source_parallelism aligned with the number of generated splits
- Keep connector and engine versions compatible
- If customizing readers, never assume handleSplitRequest is supported by every enumerator
When it happens
Trigger: A SeaTunnel reader calls handleSplitRequest(subtaskId) — typically when the reader has no splits and requests more — against this enumerator that never supports dynamic split requests.
Common situations: Custom/modified reader code requesting splits; engine behavior changes triggering dynamic split requests; misconfigured parallelism causing idle readers to request splits.
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
- CommonErrorCodeDeprecated.UNSUPPORTED_OPERATION
- UNSUPPORTED_OPERATION
- Reader {} is not registered. Pending splits {} are not assig
- Reader {} is not registered. Pending splits {} are not assig
- The single-split reader don't support reading multiple split
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/dd593c061a8cfa19.
Report an issue: GitHub.