{"record":{"id":"fd9691739d20108a","repo":"apache/seatunnel","slug":"commonerrorcodedeprecated-unsupported-operation-fd9691","errorCode":"CommonErrorCodeDeprecated.UNSUPPORTED_OPERATION","errorMessage":"Unsupported handleSplitRequest: %d","messagePattern":"Unsupported handleSplitRequest: (.+?)","errorType":"error_code","errorClass":"IotdbConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-iotdb/src/main/java/org/apache/seatunnel/connectors/seatunnel/iotdb/source/IoTDBSourceSplitEnumerator.java","lineNumber":279,"sourceCode":"    }\n\n    private static int getSplitOwner(int currentAssignCount, int numReaders) {\n        return currentAssignCount % numReaders;\n    }\n\n    @Override\n    public void notifyCheckpointComplete(long checkpointId) {\n        // nothing to do\n    }\n\n    @Override\n    public void close() {\n        // nothing to do\n    }\n\n    @Override\n    public void handleSplitRequest(int subtaskId) {\n        throw new IotdbConnectorException(\n                CommonErrorCodeDeprecated.UNSUPPORTED_OPERATION,\n                String.format(\"Unsupported handleSplitRequest: %d\", subtaskId));\n    }\n}\n","sourceCodeStart":261,"sourceCodeEnd":284,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-iotdb/src/main/java/org/apache/seatunnel/connectors/seatunnel/iotdb/source/IoTDBSourceSplitEnumerator.java#L261-L284","documentation":"SeaTunnel's SourceSplitEnumerator protocol expects readers to receive splits via the returned splits mechanism, not by requesting them. IoTDB's enumerator does not support on-demand split requests, so handleSplitRequest() unconditionally throws IotdbConnectorException(UNSUPPORTED_OPERATION).","triggerScenarios":"The engine (or a custom caller) invokes handleSplitRequest(subtaskId) on IoTDBSourceSplitEnumerator — the request-driven split assignment path that this enumerator never supports, for any subtaskId.","commonSituations":"Engine/reader protocol mismatch after job restore; custom code calling handleSplitRequest directly; translation layer requesting splits dynamically instead of using addSplitsBack/returned splits.","solutions":["Don't call handleSplitRequest; rely on the enumerator's proactive split assignment.","If seen in engine logs, check SeaTunnel version compatibility between reader and enumerator (protocol change).","Ensure job restore uses the same connector version that wrote the checkpoint.","Report as a bug if the standard pipeline triggers it."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"catch (IotdbConnectorException e) { if (e.getErrorCode() == CommonErrorCodeDeprecated.UNSUPPORTED_OPERATION) { /* don't request splits dynamically; use enumerator's assignment */ } }","preventionTips":["Never call handleSplitRequest directly; rely on returned splits","Keep reader and enumerator versions consistent across job restarts"],"tags":["iotdb","source","unsupported-operation","split-request"],"backgroundTag":"unsupported-operation","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"}