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

  1. Inspect BE logs for the underlying open_scanner error (tablet missing, version GCed, memory limit)
  2. Retry the job; transient BE overload or tablet migration often resolves
  3. 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)