-
Notifications
You must be signed in to change notification settings - Fork 1.2k
fix(redis): Preserve millisecond timestamp precision for Redis online store #5807
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 6 commits into
feast-dev:master
from
jatin5251:redis-ms-timestamp
Jan 6, 2026
Merged
fix(redis): Preserve millisecond timestamp precision for Redis online store #5807
franciscojavierarceo
merged 6 commits into
feast-dev:master
from
jatin5251:redis-ms-timestamp
Jan 6, 2026
Conversation
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
Add millisecond-precision timestamp support to Redis online store Signed-off-by: Jatin Kumar <[email protected]>
sub-second precision when returning timestamps to client Signed-off-by: Jatin Kumar <[email protected]>
fix(redis): preserve millisecond timestamp precision Signed-off-by: Jatin Kumar <[email protected]>
e163994 to
a7dca65
Compare
fix: Remove whitespace on blank lines (W293) Signed-off-by: Jatin Kumar <[email protected]>
Member
franciscojavierarceo
left a comment
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.
it'd be great if you can follow up with an integration test for this but I don't want to block this from getting in, so i'd appreciate it in a follow up
franciscojavierarceo
approved these changes
Jan 6, 2026
franciscojavierarceo
pushed a commit
that referenced
this pull request
Jan 7, 2026
… store (#5807) * Update redis.py Add millisecond-precision timestamp support to Redis online store Signed-off-by: Jatin Kumar <[email protected]> * Update redis.py sub-second precision when returning timestamps to client Signed-off-by: Jatin Kumar <[email protected]> * Update redis.py fix(redis): preserve millisecond timestamp precision Signed-off-by: Jatin Kumar <[email protected]> * Update redis.py fix: Remove whitespace on blank lines (W293) Signed-off-by: Jatin Kumar <[email protected]> --------- Signed-off-by: Jatin Kumar <[email protected]>
YassinNouh21
pushed a commit
to YassinNouh21/feast
that referenced
this pull request
Jan 10, 2026
… store (feast-dev#5807) * Update redis.py Add millisecond-precision timestamp support to Redis online store Signed-off-by: Jatin Kumar <[email protected]> * Update redis.py sub-second precision when returning timestamps to client Signed-off-by: Jatin Kumar <[email protected]> * Update redis.py fix(redis): preserve millisecond timestamp precision Signed-off-by: Jatin Kumar <[email protected]> * Update redis.py fix: Remove whitespace on blank lines (W293) Signed-off-by: Jatin Kumar <[email protected]> --------- Signed-off-by: Jatin Kumar <[email protected]> Signed-off-by: yassinnouh21 <[email protected]>
franciscojavierarceo
pushed a commit
that referenced
this pull request
Jan 16, 2026
# [0.59.0](v0.58.0...v0.59.0) (2026-01-16) ### Bug Fixes * Add get_table_query_string_with_alias() for PostgreSQL subquery aliasing ([#5811](#5811)) ([11122ce](11122ce)) * Add hybrid online store to ONLINE_STORE_CLASS_FOR_TYPE mapping ([#5810](#5810)) ([678589b](678589b)) * Add possibility to overwrite send_receive_timeout for clickhouse offline store ([#5792](#5792)) ([59dbb33](59dbb33)) * Denial by default to all resources when no permissions set ([#5663](#5663)) ([1524f1c](1524f1c)) * Make operator include full OIDC secret in repo config ([#5676](#5676)) ([#5809](#5809)) ([a536bc2](a536bc2)) * Populate Postgres `registry.path` during `feast init` ([#5785](#5785)) ([f293ae8](f293ae8)) * **redis:** Preserve millisecond timestamp precision for Redis online store ([#5807](#5807)) ([9e3f213](9e3f213)) * Search API to return all matching tags in matched_tags field ([#5843](#5843)) ([de37f66](de37f66)) * Spark Materialization Engine Cannot Infer Schema ([#5806](#5806)) ([58d0325](58d0325)), closes [#5594](#5594) [#5594](#5594) * Support arro3 table schema with newer deltalake packages ([#5799](#5799)) ([103c5e9](103c5e9)) * Timestamp formatting and lakehouse-type connector for trino_offline_store. ([#5846](#5846)) ([c2ea7e9](c2ea7e9)) * Update model_validator to use instance method signature (Pydantic v2.12 deprecation) ([#5825](#5825)) ([3c10b6e](3c10b6e)) ### Features * Add dbt integration for importing models as FeatureViews ([#5827](#5827)) ([b997361](b997361)), closes [#3335](#3335) [#3335](#3335) [#3335](#3335) * Add GCS registry store in Go feature server ([#5818](#5818)) ([1dc2be5](1dc2be5)) * Add progress bar to CLI from feast apply ([#5867](#5867)) ([ab3562b](ab3562b)) * Add RBAC blog post to website ([#5861](#5861)) ([b1844a3](b1844a3)) * Add skip_feature_view_validation parameter to FeatureStore.apply() and plan() ([#5859](#5859)) ([5482a0e](5482a0e)) * Added batching to feature server /push to offline store ([#5683](#5683)) ([#5729](#5729)) ([ce35ce6](ce35ce6)) * Enable static artifacts for feature server that can be used in Feature Transformations ([#5787](#5787)) ([edefc3f](edefc3f)) * Improve lambda materialization engine ([#5829](#5829)) ([f6116f9](f6116f9)) * Offline Store historical features retrieval based on datetime range in Ray ([#5738](#5738)) ([e484c12](e484c12)) * Read, Save docs and chat fixes ([#5865](#5865)) ([2081b55](2081b55)) * Resolve pyarrow >21 installation with ibis-framework ([#5847](#5847)) ([8b9bb50](8b9bb50)) * Support staging for spark materialization ([#5671](#5671)) ([#5797](#5797)) ([5b787af](5b787af))
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.
What this PR does / why we need it
This PR fixes an issue in the Redis online store where Feast drops sub-second
precision when comparing and storing event timestamps through the
/pushendpoint.
Problem
Feast currently serializes event timestamps using only the seconds field of
the protobuf
Timestamp(Timestamp.seconds), discardingTimestamp.nanos.As a result:
47.500Zand47.700Z)are treated as having the same timestamp.
/pushendpoint rejects later events as “older”, even when they occurmilliseconds later.
high-frequency sources (streaming pipelines, event collectors, etc.).
What this PR changes
✔ Store full protobuf
Timestampincluding nanosonline_write_batchnow constructs timestamps using:which preserves both
secondsandnanos.✔ Compare event freshness using nanosecond precision
Old behavior:
New behavior:
This ensures that sub-second updates are correctly accepted.
✔ Reconstruct full timestamp in
online_readFeast now returns proper millisecond-aware timestamps by combining
seconds + nanos / 1e9.Result
Feast users can now push multiple updates that occur within the same second and
Redis will correctly:
get_online_features.This enables correct behavior for any use case emitting dense real-time data.
Which issue(s) this PR fixes
Fixes a long-standing limitation in the Redis online store where timestamp
precision was effectively second-level, causing incorrect deduplication and
event rejection when using the
/pushAPI.(If maintainers want an issue link, I can open one in feast-dev.)
Misc
work as before.
Timestampin otheronline store implementations.