{"record":{"id":"7a1aeb88da9f899f","repo":"apache/seatunnel","slug":"reader-is-not-registered-pending-splits-are-7a1aeb","errorCode":null,"errorMessage":"Reader {} is not registered. Pending splits {} are not assigned.","messagePattern":"Reader (.+?) is not registered\\. Pending splits (.+?) are not assigned\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/source/split/DorisSourceSplitEnumerator.java","lineNumber":114,"sourceCode":"                shouldEnumerate = false;\n                assignSplit(readers);\n            }\n        }\n\n        log.debug(\n                \"No more splits to assign.\" + \" Sending NoMoreSplitsEvent to reader {}.\", readers);\n        readers.forEach(context::signalNoMoreSplits);\n    }\n\n    @Override\n    public void addSplitsBack(List<DorisSourceSplit> splits, int subtaskId) {\n        log.debug(\"Add back splits {} to DorisSourceSplitEnumerator.\", splits);\n        if (!splits.isEmpty()) {\n            addPendingSplit(splits);\n            if (context.registeredReaders().contains(subtaskId)) {\n                assignSplit(Collections.singletonList(subtaskId));\n            } else {\n                log.warn(\n                        \"Reader {} is not registered. Pending splits {} are not assigned.\",\n                        subtaskId,\n                        splits);\n            }\n        }\n    }\n\n    @Override\n    public int currentUnassignedSplitSize() {\n        return this.pendingSplit.size();\n    }\n\n    @Override\n    public void handleSplitRequest(int subtaskId) {\n        throw new DorisConnectorException(\n                CommonErrorCodeDeprecated.UNSUPPORTED_OPERATION,\n                String.format(\"Unsupported handleSplitRequest: %d\", subtaskId));\n    }","sourceCodeStart":96,"sourceCodeEnd":132,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/source/split/DorisSourceSplitEnumerator.java#L96-L132","documentation":"DorisSourceSplitEnumerator.addSplitsBack receives splits returned by a failed/restarted reader and tries to reassign them. If the subtask's reader is not currently registered with the SourceCoordinator/SplitEnumeratorContext, the splits stay pending and this warning is emitted — the data will only be assigned once that reader registers again.","triggerScenarios":"Calling addSplitsBack(splits, subtaskId) during failure recovery when context.registeredReaders() does not contain subtaskId — i.e., the reader failed before (re)registering while its splits were being returned.","commonSituations":"TaskManager/worker crash and quick restart racing with split return; Flink/Zeta job failover where a new reader has not yet registered; excessive parallelism changes leaving stale subtask ids; checkpoint restore assigning splits to a reader that never came back.","solutions":["No user action is usually needed: splits are kept pending and reassigned when the reader re-registers.","Check worker logs for the reader's registration failure if the warning persists — often a worker crash loop.","Ensure cluster resources are sufficient so failed workers restart successfully.","If a subtask id never appears again (e.g. parallelism was reduced), restart the job from a consistent checkpoint."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"// No caller action required: splits remain pending and are assigned when the reader registers; only investigate if the warning repeats without eventual assignment.","preventionTips":["Ensure workers restart promptly after failure so readers re-register","Avoid reducing parallelism while restoring from checkpoints of higher parallelism","Monitor job logs for repeated reader-registration warnings as a crash-loop signal"],"tags":["source","split-enumerator","recovery","doris"],"backgroundTag":"invalid-state-transition","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}