apache/seatunnel · error · DorisConnectorException
SCAN_BATCH_FAILED
SCAN_BATCH_FAILED
Error message
routing.toString() (DorisConnectorException SCAN_BATCH_FAILED, cause ex)
What it means
BackendClient.openScanner exhausts its retry attempts to open an external data scanner on the Doris BE (connection failures, TException, or non-OK status); it logs the last cause and throws DorisConnectorException(SCAN_BATCH_FAILED), meaning scan initialization failed on every reachable backend.
Solutions
- Inspect BE logs for the underlying open_scanner error (tablet missing, version GCed, memory limit)
- Retry the job; transient BE overload or tablet migration often resolves
- Verify query timeout and tablet availability for the requested partitions
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/backend/BackendClient.java:159 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/6eaff29698cc9092.
Report an issue: GitHub.
Appendix: source
Thrown at seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/backend/BackendClient.java:159
continue;
}
if (!TStatusCode.OK.equals(result.getStatus().getStatusCode())) {
log.warn(
"The status of open scanner result from {} is '{}', error message is: {}.",
routing,
result.getStatus().getStatusCode(),
result.getStatus().getErrorMsgs());
continue;
}
return result;
} catch (TException e) {
log.warn("Open scanner from {} failed.", routing, e);
ex = e;
}
}
log.error(ErrorMessages.CONNECT_FAILED_MESSAGE, routing);
// throw new ConnectedFailedException(routing.toString(), ex);
throw new DorisConnectorException(
DorisConnectorErrorCode.SCAN_BATCH_FAILED, routing.toString(), ex);
}
/**
* get next row batch from Doris BE
*
* @param nextBatchParams thrift struct to required by request
* @return scan batch result
* @throws DorisConnectorException throw if cannot connect to Doris BE
*/
public TScanBatchResult getNext(TScanNextBatchParams nextBatchParams) {
log.debug("GetNext to '{}', parameter is '{}'.", routing, nextBatchParams);
if (!isConnected) {
open();
}
TException ex = null;
TScanBatchResult result = null;
for (int attempt = 0; attempt < retries; ++attempt) {View on GitHub (pinned to cf67b549a7)