{"record":{"id":"7491ffba80649ea0","repo":"apache/seatunnel","slug":"unsupported-operation-7491ff","errorCode":"UNSUPPORTED_OPERATION","errorMessage":"Unsupported handleSplitRequest: %d","messagePattern":"Unsupported handleSplitRequest: (.+?)","errorType":"error_code","errorClass":"MilvusConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-milvus/src/main/java/org/apache/seatunnel/connectors/seatunnel/milvus/source/MilvusSourceSplitEnumerator.java","lineNumber":239,"sourceCode":"                        subtaskId,\n                        splits);\n            }\n        }\n        log.info(\"Add back splits {} to MilvusSourceSplitEnumerator.\", splits.size());\n    }\n\n    private void addPendingSplit(Collection<MilvusSourceSplit> splits, int ownerReader) {\n        pendingSplits.computeIfAbsent(ownerReader, r -> new ArrayList<>()).addAll(splits);\n    }\n\n    @Override\n    public int currentUnassignedSplitSize() {\n        return pendingTables.isEmpty() && pendingSplits.isEmpty() ? 0 : 1;\n    }\n\n    @Override\n    public void handleSplitRequest(int subtaskId) {\n        throw new MilvusConnectorException(\n                CommonErrorCodeDeprecated.UNSUPPORTED_OPERATION,\n                String.format(\"Unsupported handleSplitRequest: %d\", subtaskId));\n    }\n\n    @Override\n    public void registerReader(int subtaskId) {\n        log.info(\"Register reader {} to MilvusSourceSplitEnumerator.\", subtaskId);\n        if (!pendingSplits.isEmpty()) {\n            assignSplit(Collections.singletonList(subtaskId));\n        }\n    }\n\n    @Override\n    public MilvusSourceState snapshotState(long checkpointId) throws Exception {\n        synchronized (stateLock) {\n            return new MilvusSourceState(\n                    new ArrayList<>(pendingTables),\n                    new HashMap<>(pendingSplits),","sourceCodeStart":221,"sourceCodeEnd":257,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-milvus/src/main/java/org/apache/seatunnel/connectors/seatunnel/milvus/source/MilvusSourceSplitEnumerator.java#L221-L257","documentation":"MilvusSourceSplitEnumerator.handleSplitRequest throws UNSUPPORTED_OPERATION because the Milvus source uses a push-based split assignment model: the enumerator assigns splits proactively and readers never request them. Any call to handleSplitRequest is a protocol violation by the framework or a custom extension.","triggerScenarios":"A reader (or engine code path) calls handleSplitRequest(subtaskId) on the Milvus split enumerator instead of waiting for addSplitBack/assigned splits via the standard SourceReader event flow.","commonSituations":"Custom modifications to the SeaTunnel source framework, running this enumerator with a translation layer or engine version that issues split requests, or a custom reader implementation calling handleSplitRequest directly.","solutions":["Do not call handleSplitRequest — rely on the enumerator's automatic split assignment to registered readers","Check whether a customized SourceReader or translation (Flink/Spark) layer is incorrectly invoking split requests","Verify engine/connector version compatibility — update SeaTunnel if a framework regression issues requests","If you extended the source, implement assignment via the enumerator context, not request/response"],"exampleFix":"// before: reader-side custom code forcing assignment\nenumerator.handleSplitRequest(subtaskId);\n// after: register the reader and let the enumerator assign\nenumerator.registerReader(subtaskId); // enumerator pushes splits via context.assignSplit","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"// This should never be caught in application code — it signals a framework misuse.\n// Fix the caller instead of guarding:\n// before\nenumerator.handleSplitRequest(subtaskId);\n// after\nenumerator.registerReader(subtaskId);","preventionTips":["Never call handleSplitRequest on push-based enumerators","Use stock SeaTunnel SourceReader implementations for the Milvus source","Test custom engine/translation modifications against supported source semantics","Keep engine and connector versions aligned"],"tags":["milvus","source","split-enumeration","unsupported-operation"],"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"}