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>
2.3 KiB
MEP: Dynamic Configuration
Current state: "Accepted"
ISSUE: https://github.com/milvus-io/milvus/issues/18300
Keywords: config etcd
Released: 2.3.0
Summary(required)
At present, there are numerous configurations in Milvus that require a restart of Milvus to take effect. This can interrupt service in production environments and is not friendly to operations and maintenance. In this MEP, a solution for dynamically updating configurations will be provided so that users can make configuration changes without restarting the cluster.
Motivation(required)
Ability to dynamically modify configurations and expose current configuration information through API, simplifying operational complexity.
Public Interfaces(optional)
No new public interfaces changed.
Design Details(required)
Goal
- Support multiple config sources, including Etcd, environment variables, and configuration files. On this basis, add watch events for changes in the Etcd config path and file changes. When a change event occurs, broadcast it to subscribers through an event handler. Subscribers can decide on subsequent logic based on this to achieve the requirement of dynamically modifying configurations.
- Configuration priority: Etcd > Environment > milvus.yaml; higher-priority configurations override lower-priority ones. Even if a higher-priority configuration is deleted, lower-priority configurations can still be used.
- To ensure compatibility, ignore case sensitivity and characters such as / . _ when dealing with configuration item keys.
ref: https://github.com/go-chassis/go-archaius/
No-Goal (Not in this release plan)
- Configuration grading
- Node override config
- Collection override config
- Support for more cloud configs such as Consul, Zookeeper, etc.
Compatibility, Deprecation, and Migration Plan(optional)
Compatible with old versions.
Test Plan(required)
- Verify the ability to dynamically modify configurations in etcd.
- Verify the ability of helm and operator to deploy milvus.yaml and modify configurations.
- Verify the effectiveness of business operations after partially modifying dynamic configurations.
- Verify version compatibility under dynamic configuration.