{"record":{"id":"0bd289a533925c52","repo":"apache/seatunnel","slug":"unsupported-operation-0bd289","errorCode":"UNSUPPORTED_OPERATION","errorMessage":"Unsupported handleSplitRequest: %d","messagePattern":"Unsupported handleSplitRequest: (.+?)","errorType":"error_code","errorClass":"TDengineConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-tdengine/src/main/java/org/apache/seatunnel/connectors/seatunnel/tdengine/source/TDengineSourceSplitEnumerator.java","lineNumber":223,"sourceCode":"        pendingSplits.computeIfAbsent(ownerReader, r -> new ArrayList<>()).addAll(splits);\n    }\n\n    @Override\n    public TDengineSourceState snapshotState(long checkpointId) {\n        synchronized (stateLock) {\n            return new TDengineSourceState(shouldEnumerate, pendingSplits, assignCount.get());\n        }\n    }\n\n    @Override\n    public void notifyCheckpointComplete(long checkpointId) {}\n\n    @Override\n    public void close() {}\n\n    @Override\n    public void handleSplitRequest(int subtaskId) {\n        throw new TDengineConnectorException(\n                CommonErrorCodeDeprecated.UNSUPPORTED_OPERATION,\n                String.format(\"Unsupported handleSplitRequest: %d\", subtaskId));\n    }\n}\n","sourceCodeStart":205,"sourceCodeEnd":228,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-tdengine/src/main/java/org/apache/seatunnel/connectors/seatunnel/tdengine/source/TDengineSourceSplitEnumerator.java#L205-L228","documentation":"TDengineSourceSplitEnumerator does not support on-demand split requests from readers, so handleSplitRequest always throws. Split assignment is enumerator-driven; a reader requesting a specific split is an unsupported operation for this connector.","triggerScenarios":"Any call to handleSplitRequest(subtaskId) — i.e. a SourceReader calling sendSplitRequest / the framework routing a split request to this enumerator.","commonSituations":"Custom source reader code or framework path requesting splits dynamically; mixing this connector with code expecting dynamic split assignment semantics.","solutions":["Do not call handleSplitRequest against this connector; rely on its enumerator's proactive split assignment.","If dynamic split requests are required, switch to or implement a connector whose enumerator supports them.","Check for custom modifications to the source reader that issue split requests."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Never call sendSplitRequest against this source; rely on enumerator assignment\n// if (sourceReader instanceof TDengineSourceReader) { /* no split requests */ }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Do not invoke split-request APIs on TDengine source readers","Let the TDengine split enumerator assign splits proactively","Review custom reader code that assumes dynamic split negotiation"],"tags":["tdengine","split-enumerator","unsupported"],"backgroundTag":"unsupported-operation","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"}