apache/seatunnel · warning
The status of get next result from {} is '{}', error message
Error message
The status of get next result from {} is '{}', error message is: {}. What it means
Doris BackendClient.getNext() fetches the next scan batch from a backend via Thrift; when TScanNextResult status is not OK it logs 'The status of get next result from {} is ...' at WARN and tries the next routing. This indicates the backend failed mid-scan (after openScanner succeeded).
Source
Thrown at seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/backend/BackendClient.java:186
* @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) {
log.debug("Attempt {} to getNext {}.", attempt, routing);
try {
result = client.getNext(nextBatchParams);
if (result == null) {
log.warn("GetNext result from {} is null.", routing);
continue;
}
if (!TStatusCode.OK.equals(result.getStatus().getStatusCode())) {
log.warn(
"The status of get next result from {} is '{}', error message is: {}.",
routing,
result.getStatus().getStatusCode(),
result.getStatus().getErrorMsgs());
continue;
}
return result;
} catch (TException e) {
log.warn("Get next from {} failed.", routing, e);
ex = e;
}
}
if (result != null && (TStatusCode.OK != (result.getStatus().getStatusCode()))) {
log.error(
ErrorMessages.DORIS_INTERNAL_FAIL_MESSAGE,
routing,
result.getStatus().getStatusCode(),
result.getStatus().getErrorMsgs());View on GitHub (pinned to cf67b549a7)
Solutions
- Read errorMsgs in the log line for the Doris-side cause (timeout, memory limit, cancelled).
- Increase Doris query timeout / memory limits (query_timeout, mem_limit) for large scans.
- Check BE stability (SHOW BACKENDS, BE logs) and retry after the cluster is healthy.
- Retry the job; the client rotates to another backend, but a persistent error requires fixing the Doris-side condition.
Defensive patterns
Strategy: retry
Validate before calling
// pre-check cluster capacity for long scans // SHOW VARIABLES LIKE 'query_timeout'; // SHOW VARIABLES LIKE 'mem_limit'; // SHOW BACKENDS; -- ensure stable BEs
Try / catch
try {
client.getNext(nextBatchParams);
} catch (TException e) {
// reconnect / reopen scanner, rotate to next routing
} Prevention
- Raise query_timeout and memory limits for large scans
- Ensure BEs are stable (no OOM/restarts) during bulk reads
- Keep scan sessions short enough to avoid scanner context expiry
- Retry after checking BE logs for the mid-scan failure reason
When it happens
Trigger: Non-OK TStatusCode on getNext: scan timeout on the BE, query cancelled, memory limit exceeded on the backend, or BE lost the scanner context (BE restart) between openScanner and getNext.
Common situations: Large scans hitting Doris query timeout or mem limits; BE restarting/OOM mid-scan; long-running read where the scanner context expires; cluster instability during bulk reads.
Related errors
- The status of open scanner result from {} is '{}', error mes
- Connect to doris {} failed.
- Open scanner result from {} is null.
- Open scanner from {} failed.
- GetNext result from {} is null.
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/08205a146be198f2.
Report an issue: GitHub.