Refine clusterId for MilvusClientV2Session - #2011
Conversation
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: yhmo The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|
Tick the box to add this pull request to the merge queue (same as
|
There was a problem hiding this comment.
Pull request overview
This PR refines how clusterId is applied when using MilvusClientV2Session, shifting cluster routing from mutating request objects to passing the session’s clusterId through dedicated overloads and marking request-level clusterId as deprecated.
Changes:
- Update
MilvusClientV2Sessionto passclusterIdtoMilvusClientV2/VectorServicewithout mutatingSearchReq/QueryReq/HybridSearchReq/GetReq. - Add
VectorServiceandMilvusClientV2overloads that accept an explicitclusterIdand inject it into gRPC params. - Deprecate request-level
clusterIdfields and adjust unit tests to assert requests are not mutated by sessions.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| sdk-core/src/test/java/io/milvus/v2/service/vector/VectorTest.java | Updates session routing tests to expect no request mutation and session precedence. |
| sdk-core/src/main/java/io/milvus/v2/service/vector/VectorService.java | Adds overloads that accept a clusterId and inject it into outgoing gRPC requests. |
| sdk-core/src/main/java/io/milvus/v2/service/vector/request/SearchReq.java | Deprecates request-level clusterId API. |
| sdk-core/src/main/java/io/milvus/v2/service/vector/request/QueryReq.java | Deprecates request-level clusterId API. |
| sdk-core/src/main/java/io/milvus/v2/service/vector/request/HybridSearchReq.java | Deprecates request-level clusterId API. |
| sdk-core/src/main/java/io/milvus/v2/service/vector/request/GetReq.java | Deprecates request-level clusterId API. |
| sdk-core/src/main/java/io/milvus/v2/client/MilvusClientV2Session.java | Routes clusterId via overloads rather than mutating request objects for core vector APIs. |
| sdk-core/src/main/java/io/milvus/v2/client/MilvusClientV2.java | Adds package-private overloads used by sessions to pass explicit clusterId. |
Suppressed comments (2)
sdk-core/src/main/java/io/milvus/v2/service/vector/VectorService.java:268
vectorUtils.ConvertToGrpcSearchRequest(request)already addsCLUSTER_IDtosearchParamswhenrequest.getClusterId()is set (VectorUtils.ConvertToGrpcSearchRequest). This block appends anotherCLUSTER_ID, which can leave two entries and make the effective cluster routing ambiguous (and breaks the intended “session overrides request” behavior if the server reads the first value).
if (StringUtils.isNotEmpty(clusterId)) {
searchRequest = searchRequest.toBuilder()
.addSearchParams(KeyValuePair.newBuilder()
.setKey(Constant.CLUSTER_ID)
.setValue(clusterId)
sdk-core/src/main/java/io/milvus/v2/service/vector/VectorService.java:304
vectorUtils.ConvertToGrpcHybridSearchRequest(request)already includesCLUSTER_IDinrankParamswhenrequest.getClusterId()is set (via props -> AssembleKvPair). This block appends anotherCLUSTER_ID, which can produce duplicate/conflicting routing params and make precedence unclear.
if (StringUtils.isNotEmpty(clusterId)) {
searchRequest = searchRequest.toBuilder()
.addRankParams(KeyValuePair.newBuilder()
.setKey(Constant.CLUSTER_ID)
.setValue(clusterId)
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Signed-off-by: yhmo <yihua.mo@zilliz.com>
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #2011 +/- ##
=========================================
Coverage ? 65.12%
Complexity ? 4283
=========================================
Files ? 473
Lines ? 26484
Branches ? 2512
=========================================
Hits ? 17249
Misses ? 7893
Partials ? 1342
🚀 New features to boost your workflow:
|
No description provided.