-
Notifications
You must be signed in to change notification settings - Fork 1.3k
fix: Fix five bugs in milvus online store #6275
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
franciscojavierarceo
merged 7 commits into
feast-dev:master
from
korbonits:fix/milvus-online-store-bugs
Apr 15, 2026
Merged
Changes from 1 commit
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
8c41a03
docs: add sphinx api docs for aggregation, dbt, openlineage packages
korbonits a1099d6
docs: fix sphinx warnings from new package documentation
korbonits 30ff502
fix: fix five bugs in MilvusOnlineStore
korbonits 4ddb2ae
test: add regression tests for five MilvusOnlineStore bug fixes
korbonits b104a2a
fix: remove unused variable and import in milvus regression test
korbonits e84fe3c
Merge branch 'master' into fix/milvus-online-store-bugs
korbonits 90613b0
Merge branch 'master' into fix/milvus-online-store-bugs
franciscojavierarceo File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
fix: fix five bugs in MilvusOnlineStore
1. update() overwrote self._collections with the raw describe_collection() dict from the last table instead of updating the keyed cache entry. _get_or_create_collection() already updates self._collections as a side effect, so the assignment is simply dropped. 2. plan() raised NotImplementedError instead of returning [] like the base class default. This caused `feast plan` to crash for Milvus stores. 3. online_read() carried an extra full_feature_names parameter not present in the OnlineStore base class, violating the interface contract. The parameter was unused and is removed. 4. retrieve_online_documents_v2() passed the raw hit.get() result (which can be None when the composite key is absent) directly to bytes.fromhex(), raising TypeError. Guard added: only call bytes.fromhex() when the value is non-None. 5. Replace print() calls in _connect() with logger.info() so connection messages respect standard logging configuration instead of always writing to stdout. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Alex Korbonits <alex@korbonits.com>
- Loading branch information
There are no files selected for viewing
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
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🟡 Falsy check on
distancedrops valid 0.0 distance valuesAt line 746,
if distanceis used to decide whether to wrap the distance in aValueProto(float_val=...). Whendistanceis0.0(a valid distance meaning an exact match for L2 or cosine metrics), Python evaluates0.0as falsy, so the code returns an emptyValueProto()instead ofValueProto(float_val=0.0). Becausefloat_valis inside aoneof valin the proto definition (protos/feast/types/Value.proto:78),ValueProto()leaves the oneof unset (WhichOneof("val")→None), whileValueProto(float_val=0.0)correctly sets it to"float_val". This is the same bug pattern the PR fixes forraw_keyat line 694. The postgres online store handles this correctly withif distance is not None:(sdk/python/feast/infra/online_stores/postgres_online_store/postgres.py:777).(Refers to line 746)
Was this helpful? React with 👍 or 👎 to provide feedback.