apache/seatunnel · error · DorisConnectorException

UNSUPPORTED_OPERATION

UNSUPPORTED_OPERATION

Error message

Unsupported handleSplitRequest: %d

What it means

DorisSourceSplitEnumerator.handleSplitRequest is intentionally unsupported: this enumerator pushes splits to readers proactively (via assignSplit) and never serves on-demand requests. Any reader request triggers this exception with the requesting subtaskId.

Source

Thrown at seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/source/split/DorisSourceSplitEnumerator.java:129

            if (context.registeredReaders().contains(subtaskId)) {
                assignSplit(Collections.singletonList(subtaskId));
            } else {
                log.warn(
                        "Reader {} is not registered. Pending splits {} are not assigned.",
                        subtaskId,
                        splits);
            }
        }
    }

    @Override
    public int currentUnassignedSplitSize() {
        return this.pendingSplit.size();
    }

    @Override
    public void handleSplitRequest(int subtaskId) {
        throw new DorisConnectorException(
                CommonErrorCodeDeprecated.UNSUPPORTED_OPERATION,
                String.format("Unsupported handleSplitRequest: %d", subtaskId));
    }

    @Override
    public void registerReader(int subtaskId) {
        log.debug("Register reader {} to DorisSourceSplitEnumerator.", subtaskId);
        if (!pendingSplit.isEmpty()) {
            assignSplit(Collections.singletonList(subtaskId));
        }
    }

    @Override
    public DorisSourceState snapshotState(long checkpointId) {
        synchronized (stateLock) {
            return new DorisSourceState(shouldEnumerate, pendingSplit);
        }
    }

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Do not call sendSplitRequest from readers consuming Doris source splits
  2. Increase source parallelism or reduce reader count so splits are sufficient
  3. If using stock code, upgrade — earlier versions had request-related regressions
  4. Verify the checkpointed reader state isn't asking for reassignment after restore
Defensive patterns

Strategy: try-catch

Validate before calling

// in a custom reader: never call
// context.sendSplitRequest(); with DorisSourceSplitEnumerator

Try / catch

try { enumerator.handleSplitRequest(subtaskId); } catch (DorisConnectorException e) { LOG.warn("split requests unsupported; splits are pushed by the enumerator"); }

Prevention

When it happens

Trigger: SourceReader calls context.sendSplitRequest() (e.g. because it ran out of splits and believes more may come) while registered with this enumerator.

Common situations: Custom source reader modifications requesting splits; framework-triggered requests after a reader finishes all assigned splits; misconfigured parallelism causing readers to starve and 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/fd08f8903d2dd3a9. Report an issue: GitHub.