{"record":{"id":"0eb40973586abb68","repo":"apache/seatunnel","slug":"reader-is-not-registered-pending-splits-are-0eb409","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-influxdb/src/main/java/org/apache/seatunnel/connectors/seatunnel/influxdb/source/InfluxDBSourceSplitEnumerator.java","lineNumber":100,"sourceCode":"            }\n\n            assignSplit(readers);\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<InfluxDBSourceSplit> splits, int subtaskId) {\n        log.debug(\"Add back splits {} to InfluxDBSourceSplitEnumerator.\", splits);\n        if (!splits.isEmpty()) {\n            addPendingSplit(splits, subtaskId);\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 pendingSplit.size();\n    }\n\n    @Override\n    public void registerReader(int subtaskId) {\n        log.debug(\"Register reader {} to InfluxDBSourceSplitEnumerator.\", subtaskId);\n        if (!pendingSplit.isEmpty()) {\n            assignSplit(Collections.singletonList(subtaskId));\n        }","sourceCodeStart":82,"sourceCodeEnd":118,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-influxdb/src/main/java/org/apache/seatunnel/connectors/seatunnel/influxdb/source/InfluxDBSourceSplitEnumerator.java#L82-L118","documentation":"InfluxDBSourceSplitEnumerator.addSplitsBack re-queues splits returned by a failed/recovered reader; if the subtask's reader is not registered with the coordinator yet, the splits cannot be assigned and this warning is logged. Splits stay pending and are assigned after the reader registers. This is an expected race during failover, not a data-loss condition.","triggerScenarios":"addSplitsBack(splits, subtaskId) invoked (e.g. by the SourceCoordinator on reader failure/restore) while context.registeredReaders() does not contain subtaskId — reader hasn't re-registered after restart/failover.","commonSituations":"TaskManager loss during InfluxDB read; checkpoint restore starting the enumerator before readers reconnect; rescaling that moves readers between workers.","solutions":["Usually no action needed — pending splits are assigned once the reader registers","If splits never get assigned, check reader registration flow and restart the job","Ensure stable cluster resources to reduce reader failover frequency","Verify SourceReaderContext registration events are not dropped in custom coordinator code"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Treat the warning as normal during failover; ensure pending splits drain afterward","Monitor reader registration events after restarts","Keep TaskManager/worker failures low via adequate resources","Test job restore flows to confirm splits are reassigned"],"tags":["influxdb","source","split-assignment","reader-registration"],"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-14T11:17:12.474Z"}