Repository navigation
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.
🟡 Changes recommended
Server failures can return success statuses, exceptions can escape, and the public CRTP and aggregate-header contracts need correction.
7 open findings
Return server failure for nonzero response envelope codes · New Catch exceptions from serialization, client setup, posting, and parsing · New Preserve details for transport and HTTP failures · New Export Bulk Import types through MilvusClientV2.h · New Make BaseDescribeImportRequest CRTP constructor protected · New Make BaseImportRequest CRTP constructor protected · New Make BaseListImportJobsRequest CRTP constructor protected · New
What changed in this PR
Adds DTO-based bulk-import REST APIs aligned with V2 SDK conventions.
Changes:
- Adds Milvus, Volume, and Cloud request DTO hierarchies.
- Adds a JSON-backed bulk-import response DTO and
Statusoverloads. - Adds local HTTP-server unit coverage for request serialization and routing.
| File | Description |
|---|---|
src/include/milvus/BulkImport.h |
Declares DTO-based overloads. |
src/impl/BulkImport.cpp |
Implements shared REST handling. |
src/include/milvus/request/import/BaseImportRequest.h |
Defines common import fields. |
src/include/milvus/request/import/BaseDescribeImportRequest.h |
Defines common job-operation fields. |
src/include/milvus/request/import/BaseListImportJobsRequest.h |
Defines common list fields. |
src/include/milvus/request/import/MilvusImportRequest.h |
Declares Milvus import DTO. |
src/impl/request/import/MilvusImportRequest.cpp |
Serializes Milvus imports. |
src/include/milvus/request/import/VolumeImportRequest.h |
Declares volume import DTO. |
src/impl/request/import/VolumeImportRequest.cpp |
Serializes volume imports. |
src/include/milvus/request/import/CloudImportRequest.h |
Declares cloud import DTO. |
src/impl/request/import/CloudImportRequest.cpp |
Serializes cloud imports. |
src/include/milvus/request/import/MilvusDescribeImportRequest.h |
Declares Milvus job DTO. |
src/impl/request/import/MilvusDescribeImportRequest.cpp |
Serializes Milvus job operations. |
src/include/milvus/request/import/CloudDescribeImportRequest.h |
Declares cloud job DTO. |
src/impl/request/import/CloudDescribeImportRequest.cpp |
Serializes cloud job operations. |
src/include/milvus/request/import/MilvusListImportJobsRequest.h |
Declares Milvus list DTO. |
src/impl/request/import/MilvusListImportJobsRequest.cpp |
Serializes Milvus list requests. |
src/include/milvus/request/import/CloudListImportJobsRequest.h |
Declares cloud list DTO. |
src/impl/request/import/CloudListImportJobsRequest.cpp |
Serializes cloud list requests. |
src/include/milvus/response/import/BulkImportResponse.h |
Declares response wrapper. |
src/impl/response/import/BulkImportResponse.cpp |
Implements response accessors. |
test/ut/TestBulkImport.cpp |
Tests DTO routing and payloads. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
…mport overloads Mirror the Java SDK bulk-writer request hierarchy: BaseImportRequest (MilvusImportRequest/VolumeImportRequest/CloudImportRequest), BaseDescribeImportRequest (Milvus/Cloud), and BaseListImportJobsRequest (Milvus/Cloud), plus a BulkImportResponse that wraps the raw REST JSON. Add CreateImportJobs/ListImportJobs/GetImportJobProgress/CommitImport/ AbortImport overloads that accept the request DTOs and return Status with a BulkImportResponse out-parameter; the legacy nlohmann::json overloads stay unchanged. The DTO describe/commit/abort payloads use the server jobId field. DTO overloads surface server rejections through a nonzero envelope code, classify transport vs HTTP failures, never leak exceptions, and the new DTOs are reachable from the MilvusClientV2 aggregate header. CRTP base request constructors are protected so they cannot be instantiated directly. Normalize the legacy GetImportJobProgress payload to the server jobId field, route the DTO GetImportJobProgress through /describe, and let describe/commit/ abort target a non-default database via the DB-Name header (BaseDescribeImportRequest gains a database name). The DTO template wrappers delegate to private non-template implementations in BulkImport.cpp so the header carries no REST endpoint strings; the HTTP helpers are file-local to the implementation. Signed-off-by: yhmo <yihua.mo@zilliz.com>


Summary
Mirror the Java SDK bulk-writer request hierarchy for the C++
milvus::BulkImportREST utility. Currently the C++ bulk-import methods take scattered scalar parameters; this change introduces DTO-style request/response types matching the SDK's V2 request/response convention.What's new
src/include/milvus/request/import/request DTOs (with impls undersrc/impl/request/import/):BaseImportRequest(CRTP template:ApiKey,Options) →MilvusImportRequest,VolumeImportRequest,CloudImportRequestBaseDescribeImportRequest→MilvusDescribeImportRequest,CloudDescribeImportRequestBaseListImportJobsRequest→MilvusListImportJobsRequest,CloudListImportJobsRequestsrc/include/milvus/response/import/BulkImportResponsewrapping the raw REST JSON envelope (RawJson,Code,Message,Data,JobId).BulkImport::CreateImportJobs/ListImportJobs/GetImportJobProgress/CommitImport/AbortImportoverloads accepting the request DTOs and returningStatuswith aBulkImportResponseout-parameter. The legacynlohmann::jsonoverloads remain unchanged.Notes
DBRequestBase<T>) so fluentWithXxxsetters chain across base/derived boundaries.jobIdfield (matching the v2 RESTJobIDReqcontract and the Java SDK); the legacyGetImportJobProgresskeeps its originaljobIDpayload.Authorization: Bearerheader only, consistent with the existing implementation.Validation
BulkImportTest.Dto*cases).