Repository navigation
Conversation
edwinyyyu
force-pushed
the
feat/milvus-collection-registry
branch
11 times, most recently
from
August 28, 2026 00:25
4597d49 to
9f286e6
Compare
edwinyyyu
force-pushed
the
feat/milvus-collection-registry
branch
from
August 28, 2026 00:50
9f286e6 to
a466586
Compare
10 of 11 tasks
edwinyyyu
force-pushed
the
feat/milvus-collection-registry
branch
2 times, most recently
from
August 31, 2026 22:00
96b4f82 to
92b33b0
Compare
…tion Signed-off-by: Edwin Yu <[email protected]>
…registry Signed-off-by: Edwin Yu <[email protected]>
Signed-off-by: Edwin Yu <[email protected]>
Signed-off-by: Edwin Yu <[email protected]>
…registry Signed-off-by: Edwin Yu <[email protected]>
edwinyyyu
force-pushed
the
feat/milvus-collection-registry
branch
from
August 31, 2026 22:44
92b33b0 to
b06c017
Compare
Contributor
Author
|
Superseded by a reworked stack. The premise this PR was built on has changed in four ways, each now filed separately:
The defects this PR did fix are still fixed by the replacement, and are now filed on their own so they do not get lost: #1562 (native name re-derived on open) and #1563 (stale handles resurrecting records). Closing rather than force-pushing, so the review discussion here stays attached to the design it was about. Replacement PRs to follow. |
This was referenced Sep 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose of the change
Move MilvusVectorStore's collection metadata onto the SQL-backed collection registry from #1526, the same swap #1527 made for Qdrant. Milvus kept the same bookkeeping shape (per-namespace
memmachine_<ns>__registryMilvus collections with dummy-vector rows) with the same non-atomic read-check-write lifecycle guarded only by per-process locks — and the same cross-process races (#1525). Keeping a bespoke in-Milvus registry was self-containment that was no longer worth its hacks once the shared primitive existed.Stacked on the concurrency-scope PR (4/5); only the last commit is new to this PR.
Description
milvus_vector_store.py: all__registrymachinery is deleted (_REGISTRY_*constants, the dummy-vector registry collections,_ensure_namespace_registry_collection,_get_registry_entry, the hand-rolled_parse_entry,_register_collection,_is_not_found_error).MilvusVectorStoreParamsgains a requiredregistry: CollectionRegistry. The lifecycle follows the Qdrant design exactly:AlreadyExistsnow holds across processes sharing the registry database;_name_locksremain as in-process serialization only.Milvus-specific notes: native naming is unchanged (
memmachine_{ns}__{sha256(config)}); there is no shard-key machinery — the generationed partition key is only the partition key field value; the native schema's partition-key VARCHAR is resized for generationed keys, and native primary ids ({partition_key}:{uuid}) now embed the generation, keeping ids unique across generations.Concurrency scope:
MilvusVectorStore.concurrency_scopewidens fromPROCESStomin(CLUSTER, registry scope). Milvus's defaultSessionconsistency (process B may read stale data relative to process A's writes) sits within theVectorStoreCollectionvisibility contract — no read-your-writes is promised — but deployments wanting stronger data-plane visibility should setconsistency_levelaccordingly.Configuration:
MilvusConf.registry_database(required) names a configured relational database entry; the wiring builds the registrymilvus_<conf name>via a_build_collection_registryhelper now shared with Qdrant. Sample configs, docs, and the installation wizard updated.Design doc:
design/collection_registry_backends.md(the Qdrant doc, extended and renamed).Breaking changes
MilvusConf.registry_databaseis required: existing Milvus users add one line of YAML. Stalememmachine_<ns>__registryMilvus collections are no longer read; as with Qdrant, this is mostly self-healing (native names unchanged, re-creation with an unchanged config re-registers the same native collection), with the same derived-schema drift caveat, and stale registry collections can be dropped manually.Fixes/Closes
Related to #1525.
Type of change
How Has This Been Tested?
Milvus suite (Milvus Lite) runs with a registry over SQLite; the Milvus-side registry white-box test is removed with the machinery it tested; the scope assertion updates to governed-by-registry (
MACHINEover the SQLite test registry). DatabaseManager and configuration tests updated forregistry_databaseand the shared registry-builder helper.Test Results: full server suite 1899 passed; targeted vector-store + resource-manager integration run 555 passed;
ruff check,ruff format --check,ty check packagesclean (no new diagnostics).Checklist
Further comments
With Qdrant and Milvus both on the registry, the remaining
PROCESS-scoped stores are the SQLite-backed ones, whose limitation is in-process search-engine state rather than metadata — the registry deliberately does not chase that.