Pewarta Proxy

📋 Server Request & Proxy Logs

Loading active proxy settings...
Developed by Khairul Adha (adhexa.id)
Mengambil log server...

⚙️ Pengaturan Proxy Target

Skip to content

feat: Add num_partitions and partition_key_isolation to the Milvus online store - #7083

Open
jiwidi wants to merge 1 commit into
feast-dev:masterfrom
jiwidi:feat/milvus-partition-options
Open

jiwidi wants to merge 1 commit into
feast-dev:masterfrom
jiwidi:feat/milvus-partition-options

Conversation

@jiwidi

@jiwidi jiwidi commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

What this PR does / why we need it:

#6940 added partition keys. Milvus has two per-collection settings that go with them and that can
only be set when the collection is created: the number of partitions, and
partition key isolation,
which makes a search filtered on the key scan only that key's data. Like key_ttl_seconds in the
Redis store, they are settings the store applies when it creates data and cannot change later.

Field Behaviour
num_partitions Number of partitions of a new collection that has a partition key.
partition_key_isolation Sets the partitionkey.isolation property of a new collection that has a partition key. Milvus supports it with the HNSW index.

Both are ignored for feature views without a partition key, and both only apply when Feast creates
the collection, like partition_key itself. When unset nothing is sent, so Milvus keeps its
defaults. Milvus Lite ignores num_partitions.

online_store:
  type: milvus
  partition_key: "brand_id"
  num_partitions: 32
  partition_key_isolation: true
  index_type: "HNSW"

Which issue(s) this PR fixes:

N/A

Checks

  • I've made sure the tests are passing.
  • My commits are signed off (git commit -s)
  • My PR title follows conventional commits format

Testing Strategy

  • Unit tests

  • Integration tests

  • Manual tests

  • Testing is not required for this change

  • Unit (mocked client): both settings are sent for a feature view with a partition key and not
    for one without; nothing is sent when unset; num_partitions: 0 is rejected.

  • Server: the collection reports the partition count and the isolation property, and a filtered
    search returns only that tenant's rows.

Unit tests run on Milvus Lite 3.2.1 (pymilvus 3.0.2). The server test in
sdk/python/tests/integration/online_store/test_milvus_remote.py passes against a local
Milvus 3.0.2 server. The existing Milvus unit and server tests pass unchanged.

Misc

Part of a stack that adds to the Milvus online store the update and delete functionality the Redis
online store has, following #6882, #6895, #6917, #6921 and #6940. The other PRs of the stack are
#7082 (row deletion) and #7084 (tie-break in write batches). mutation_timeout and a schema mismatch check follow once these merge.

…line store

A partition key (feast-dev#6940) comes with two collection settings that Milvus
only accepts when the collection is created: the number of partitions,
and partition key isolation, which makes a search filtered on the key
scan only that key's data.

num_partitions and partition_key_isolation are passed to
create_collection for feature views that have a partition key. They are
ignored for other feature views. When unset nothing is sent, so Milvus
keeps its defaults.

Signed-off-by: jiwidi <fhjaime96@gmail.com>
@codecov-commenter

codecov-commenter commented Oct 28, 2026 •

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 51.00%. Comparing base (1e5e90c) to head (e34d347).
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #7083      +/-   ##
==========================================
+ Coverage   50.97%   51.00%   +0.02%     
==========================================
  Files         455      455              
  Lines       56994    57011      +17     
  Branches     8321     8325       +4     
==========================================
+ Hits        29055    29080      +25     
+ Misses      25954    25946       -8     
  Partials     1985     1985              
Flag Coverage Δ
go-feature-server 30.58% <ø> (+0.20%) ⬆️
python-unit 52.47% <100.00%> (+0.01%) ⬆️
Files with missing lines Coverage Δ
.../infra/online_stores/milvus_online_store/milvus.py 76.93% <100.00%> (+0.76%) ⬆️

... and 1 file with indirect coverage changes


Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 1e5e90c...e34d347. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants