{"record":{"id":"d7ce1851c414cdb3","repo":"apache/seatunnel","slug":"unsupported-operation-d7ce18","errorCode":"UNSUPPORTED_OPERATION","errorMessage":"Unsupported handleSplitRequest: %d","messagePattern":"Unsupported handleSplitRequest: (.+?)","errorType":"error_code","errorClass":"KuduConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-kudu/src/main/java/org/apache/seatunnel/connectors/seatunnel/kudu/source/KuduSourceSplitEnumerator.java","lineNumber":202,"sourceCode":"        }\n    }\n\n    private void addPendingSplit(Collection<KuduSourceSplit> splits, int ownerReader) {\n        pendingSplits.computeIfAbsent(ownerReader, r -> new ArrayList<>()).addAll(splits);\n    }\n\n    private int getSplitOwner(int currentAssignCount, int numReaders) {\n        return currentAssignCount % numReaders;\n    }\n\n    @Override\n    public int currentUnassignedSplitSize() {\n        return pendingSplits.size();\n    }\n\n    @Override\n    public void handleSplitRequest(int subtaskId) {\n        throw new KuduConnectorException(\n                CommonErrorCodeDeprecated.UNSUPPORTED_OPERATION,\n                String.format(\"Unsupported handleSplitRequest: %d\", subtaskId));\n    }\n\n    @Override\n    public void registerReader(int subtaskId) {\n        log.debug(\"Register reader {} to KuduSourceSplitEnumerator.\", subtaskId);\n        if (!pendingSplits.isEmpty()) {\n            assignSplit(Collections.singletonList(subtaskId));\n        }\n    }\n\n    @Override\n    public KuduSourceState snapshotState(long checkpointId) throws Exception {\n        synchronized (stateLock) {\n            return new KuduSourceState(\n                    new ArrayList<>(pendingTables),\n                    new HashMap<>(pendingSplits),","sourceCodeStart":184,"sourceCodeEnd":220,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-kudu/src/main/java/org/apache/seatunnel/connectors/seatunnel/kudu/source/KuduSourceSplitEnumerator.java#L184-L220","documentation":"KuduSourceSplitEnumerator.handleSplitRequest is an intentionally unsupported operation: in SeaTunnel's SourceSplitEnumerator contract, readers may optionally request splits, but this enumerator only pushes splits and does not serve on-demand requests. It throws CommonErrorCodeDeprecated.UNSUPPORTED_OPERATION formatted with the requesting subtask id.","triggerScenarios":"A source reader calls handleSplitRequest(subtaskId) on the Kudu split enumerator; normally only happens if the SourceReader's split-request mode is enabled or a custom/modified reader issues a request.","commonSituations":"Running a reader implementation that assumes on-demand split assignment; custom modifications to the kudu connector where the reader sends split requests; framework changes making readers request splits by default.","solutions":["Do not call handleSplitRequest with this enumerator; splits are pushed automatically by the framework","Ensure the SourceReader uses the default push-based split assignment (restore/reader registration triggers assignment)","If you need request-based assignment, modify the enumerator to implement request handling instead of throwing"],"exampleFix":"// before\nreader.sendSplitRequest();\n// after: rely on push model - just register and wait\ncontext.registeredReaders(); // enumerator assigns splits automatically","handlingStrategy":"validation","validationCode":"if (enumerator instanceof KuduSourceSplitEnumerator) {\n    // never call handleSplitRequest; splits are pushed automatically\n}","typeGuard":null,"tryCatchPattern":"try {\n    enumerator.handleSplitRequest(subtaskId);\n} catch (KuduConnectorException e) {\n    // do not issue split requests against push-based enumerators\n}","preventionTips":["Rely on the framework's push-based split assignment for Kudu","Do not enable request-based split assignment with the Kudu source","Keep the SourceReader aligned with the enumerator's assignment model"],"tags":["unsupported-operation","kudu","split-enumerator"],"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"}