{"record":{"id":"c9bfd98e02d10466","repo":"apache/seatunnel","slug":"the-status-of-open-scanner-result-from-is","errorCode":null,"errorMessage":"The status of open scanner result from {} is '{}', error message is: {}.","messagePattern":"The status of open scanner result from (.+?) is '(.+?)', error message is: (.+?)\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/backend/BackendClient.java","lineNumber":144,"sourceCode":"     * @return scan open result\n     * @throws DorisConnectorException throw if cannot connect to Doris BE\n     */\n    public TScanOpenResult openScanner(TScanOpenParams openParams) {\n        log.debug(\"OpenScanner to '{}', parameter is '{}'.\", routing, openParams);\n        if (!isConnected) {\n            open();\n        }\n        TException ex = null;\n        for (int attempt = 0; attempt < retries; ++attempt) {\n            log.debug(\"Attempt {} to openScanner {}.\", attempt, routing);\n            try {\n                TScanOpenResult result = client.openScanner(openParams);\n                if (result == null) {\n                    log.warn(\"Open scanner result from {} is null.\", routing);\n                    continue;\n                }\n                if (!TStatusCode.OK.equals(result.getStatus().getStatusCode())) {\n                    log.warn(\n                            \"The status of open scanner result from {} is '{}', error message is: {}.\",\n                            routing,\n                            result.getStatus().getStatusCode(),\n                            result.getStatus().getErrorMsgs());\n                    continue;\n                }\n                return result;\n            } catch (TException e) {\n                log.warn(\"Open scanner from {} failed.\", routing, e);\n                ex = e;\n            }\n        }\n        log.error(ErrorMessages.CONNECT_FAILED_MESSAGE, routing);\n        //        throw new ConnectedFailedException(routing.toString(), ex);\n        throw new DorisConnectorException(\n                DorisConnectorErrorCode.SCAN_BATCH_FAILED, routing.toString(), ex);\n    }\n","sourceCodeStart":126,"sourceCodeEnd":162,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/backend/BackendClient.java#L126-L162","documentation":"Doris BackendClient.openScanner() sends a TScanOpenRequest to a selected BE/FE node via Thrift; when the returned TScanOpenResult status is not OK it logs 'The status of open scanner result from {} is ...' at WARN and continues to the next routing (retrying another backend). If no backend succeeds the caller eventually gets a failure. It reflects the Doris backend rejecting or failing the scan open request.","triggerScenarios":"The Doris backend returns a non-OK TStatusCode for openScanner: tablet not found, backend overloaded, query timeout, invalid query plan, or the BE is unhealthy/decommissioned.","commonSituations":"Doris cluster under load or BE restarting; table undergoing schema change/compaction making tablets unavailable; stale FE routing info pointing to a dead BE; SELECT query with filters that hit unavailable replicas.","solutions":["Check Doris BE health (SHOW BACKENDS) and that the reported routing node is alive.","Inspect the error message in the log (errorMsgs) for the Doris-side reason (e.g. tablet not found, timeout).","Retry the job; BackendClient usually rotates to another backend on next attempt.","If persistent, fix the Doris table/tablet issue (wait for schema change/repair) or refresh FE metadata."],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// before reading: check backend health and tablet availability\n// SHOW BACKENDS;              -- all BEs alive\n// SHOW TABLET diagnostics;    -- replicas healthy\n// ADMIN SHOW REPLICA STATUS FROM table;","typeGuard":null,"tryCatchPattern":"try {\n    client.openScanner(params);\n} catch (TException e) {\n    // rotate routing / retry next backend\n}","preventionTips":["Monitor BE health (SHOW BACKENDS) before large reads","Avoid scanning during schema change/compaction windows","Keep FE routing metadata fresh (restart scanner after BE topology changes)","Read errorMsgs in the WARN to identify the Doris-side cause"],"tags":["doris","backend","thrift","scanner","retry"],"backgroundTag":"upstream-api-error","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}