issue: #49831 ## What changed Vendor Milvus design documents into this repository under `docs/design-docs` as regular tracked files. - Keep only the design document content and assets under `docs/design-docs/design_docs/` and `docs/design-docs/assets/`. - Remove standalone repository metadata from the vendored directory, such as `README.md`, `CONTRIBUTING.md`, `MEP-TEMPLATE.md`, `COMMITTERS`, `MAINTAINERS`, `OWNERS`, `OWNERS_ALIASES`, and `.gitignore`. - Document the Milvus design document process in the main `CONTRIBUTING.md`. - Update Mergify and `tools/mgit.py` so feature PRs must provide an in-repo design document path under `docs/design-docs/design_docs/`. ## Why Milvus feature work should have an associated design document. Keeping design docs directly in this repository makes them available from a normal Milvus checkout and lets feature implementations include or link the related design document in the same repository. ## Verification - `git diff --check` - `python3 -m unittest tools/test_mgit_design_doc.py` - `python3 -m py_compile tools/mgit.py tools/test_mgit_design_doc.py` - Parsed `.github/mergify.yml` with Python `yaml.safe_load` - Confirmed `docs/design-docs` only contains `assets/` and `design_docs/` at the top level --------- Signed-off-by: xiaofanluan <xiaofan.luan@zilliz.com> Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
3.0 KiB
GetReplicateConfiguration API Design
Date: 2026-01-28
Overview
Add a new public API GetReplicateConfiguration that allows cluster administrators to view the current cross-cluster replication topology. The API returns configured replication relationships without exposing sensitive connection parameters like tokens.
Motivation
Operators need visibility into the current replication setup to:
- Verify replication topology is configured correctly
- Troubleshoot replication issues
- Audit cluster configuration
Currently, UpdateReplicateConfiguration exists but there's no corresponding read API to inspect the current state.
API Definition
Add to milvus.proto on the MilvusService:
rpc GetReplicateConfiguration(GetReplicateConfigurationRequest)
returns (GetReplicateConfigurationResponse) {}
message GetReplicateConfigurationRequest {
option (common.privilege_ext_obj) = {
object_type: Global
object_privilege: PrivilegeGetReplicateConfiguration
object_name_index: -1
};
}
message GetReplicateConfigurationResponse {
common.Status status = 1;
common.ReplicateConfiguration configuration = 2;
}
Response Behavior
- Returns the existing
common.ReplicateConfigurationstructure ConnectionParam.tokenfields are cleared/redacted before returning- If no replication is configured, returns empty configuration with success status
Security
Authorization
- Requires ClusterAdmin privilege
- Unauthenticated or unauthorized requests return permission denied error
Data Sanitization
The implementation must sanitize sensitive fields before returning:
MilvusCluster.connection_param.token→ empty string
Implementation Flow
Client SDK
│
▼
Proxy (MilvusService)
│ - Check ClusterAdmin permission
│ - Forward to StreamingCoord
▼
StreamingCoord
│ - Retrieve current ReplicateConfiguration
│ - Sanitize: clear token fields
│ - Return response
▼
Proxy
│ - Return to client
▼
Client SDK
Files to Modify
Proto Changes (milvus-proto repo)
proto/milvus.proto- Add RPC definition and request/response messages
Proxy Layer
internal/proxy/impl.go- AddGetReplicateConfigurationmethodinternal/proxy/proxy.go- Wire up the new API
StreamingCoord Layer
internal/streamingcoord/server/service/- Add handler to fetch and sanitize config
Permission
- Register the API with ClusterAdmin privilege check
Tests
- Unit tests for sanitization logic
- Integration test for the full API flow
Alternatives Considered
1. Expose via StreamingCoordStateService only (internal)
Rejected: Requires direct access to internal services; not accessible via standard SDKs.
2. Return full configuration including tokens
Rejected: Security risk; tokens should not be readable via API.
3. Include health/status information
Deferred: Keeping initial implementation simple to match the Update API symmetry. Health info can be added later if needed.
Open Questions
None.