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

  1. Don't call handleSplitRequest against IoTDB source; rely on the enumerator's proactive assignment
  2. If you see this from stock readers, check SeaTunnel/IoTDB connector version compatibility and upgrade the connector
  3. Adjust source parallelism so reader count matches split count and readers don't need to request more splits
  4. 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

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


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