Skip to content

fix: Preserve entity row order in precomputed reads - #6806

Open
JodeZer wants to merge 1 commit into
feast-dev:masterfrom
JodeZer:fix/precomputed-entity-row-order
Open

JodeZer wants to merge 1 commit into
feast-dev:masterfrom
JodeZer:fix/precomputed-entity-row-order

Conversation

@JodeZer

@JodeZer JodeZer commented Sep 1, 2026

Copy link
Copy Markdown

What this PR does / why we need it:

Precomputed online retrieval deduplicates and sorts entity keys before reading their vectors. The fast path previously wrote those vectors into response rows by enumeration order instead of mapping them back to the original request rows. Unsorted requests could therefore receive another entity's features, and repeated entities were not fanned out to every requested row.

This is a user-facing correctness fix. It passes the entity-to-request-row mapping into the precomputed fast path and scatters values, field statuses, and timestamps back to their original positions while preserving the existing deduplicated read and parse behavior.

Both synchronous and asynchronous public get_online_features paths are covered.

Which issue(s) this PR fixes:

Fixes #6805

The affected precomputed path was introduced by #6463 for #6185.

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

Successful checks:

  • Precomputed feature vector unit file: 62 passed, including sync and async public retrieval with unordered and duplicate entities.
  • Adjacent unique-entity and async feature-server tests: 5 passed.
  • Full repository lint: Ruff passed for 917 files; mypy passed for 627 source files.
  • Feast pre-commit and pre-push hooks passed.

The full make test-python-unit run completed with 2630 passed and 17 skipped, but exited nonzero with 17 failures and 22 errors unrelated to the changed files. Local failures were confined to existing environment-sensitive areas: SQLite extension loading, CLI repository templates, Docling dependency compatibility, and MongoDB test-container port mapping. All 62 tests in the modified precomputed suite passed within that full run.

Misc

No public API, protobuf, storage schema, or dependency changes.

Release note

Fix precomputed online retrieval to preserve entity input order and duplicate rows.

@JodeZer
JodeZer requested review from a team as code owners September 1, 2026 10:08
@JodeZer
JodeZer requested review from franciscojavierarceo, ntkathole and tokoko and removed request for a team September 1, 2026 10:08
@ntkathole
ntkathole force-pushed the fix/precomputed-entity-row-order branch from 2da5f81 to 7825e50 Compare September 16, 2026 06:56
@codecov-commenter

codecov-commenter commented Sep 26, 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 47.18%. Comparing base (922db5c) to head (7825e50).
⚠️ Report is 21 commits behind head on master.
❗ 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    #6806      +/-   ##
==========================================
+ Coverage   47.11%   47.18%   +0.06%     
==========================================
  Files         419      419              
  Lines       51886    51889       +3     
  Branches     7528     7530       +2     
==========================================
+ Hits        24448    24484      +36     
+ Misses      25688    25648      -40     
- Partials     1750     1757       +7     
Flag Coverage Δ
go-feature-server 30.58% <ø> (ø)
python-unit 48.50% <100.00%> (+0.07%) ⬆️
Files with missing lines Coverage Δ
...k/python/feast/infra/online_stores/online_store.py 81.72% <100.00%> (+11.34%) ⬆️

... and 2 files 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 922db5c...7825e50. 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.

Signed-off-by: JodeZer <jeffery1993@hotmail.com>
@ntkathole
ntkathole force-pushed the fix/precomputed-entity-row-order branch from 7825e50 to b756936 Compare September 26, 2026 17:51

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Precomputed online retrieval does not preserve entity input order or duplicates

3 participants