Skip to content

Commit 463f16c

Browse files
authored
fix: Include StreamFeatureView in freshness metric (#6269)
* added stream_fv Signed-off-by: Vanshika Vanshika <vvanshik@redhat.com> Signed-off-by: Vanshika Vanshika <vvanshik@redhat.com> rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED * nit Signed-off-by: Vanshika Vanshika <vvanshik@redhat.com> rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED
1 parent 3f11356 commit 463f16c

2 files changed

Lines changed: 17 additions & 1 deletion

File tree

sdk/python/feast/metrics.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,8 +378,10 @@ def update_feature_freshness(
378378
"""
379379
try:
380380
feature_views = store.list_feature_views(allow_cache=True)
381+
stream_feature_views = store.list_stream_feature_views(allow_cache=True)
382+
all_views = feature_views + stream_feature_views
381383
now = datetime.now(tz=timezone.utc)
382-
for fv in feature_views:
384+
for fv in all_views:
383385
end_time = fv.most_recent_end_time
384386
if end_time is not None:
385387
if end_time.tzinfo is None:

sdk/python/tests/unit/test_metrics.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -493,9 +493,16 @@ def test_sets_freshness_for_materialized_views(self):
493493
minutes=5
494494
)
495495

496+
mock_sfv = MagicMock()
497+
mock_sfv.name = "test_sfv"
498+
mock_sfv.most_recent_end_time = datetime.now(tz=timezone.utc) - timedelta(
499+
minutes=5
500+
)
501+
496502
mock_store = MagicMock()
497503
mock_store.project = "test_project"
498504
mock_store.list_feature_views.return_value = [mock_fv]
505+
mock_store.list_stream_feature_views.return_value = [mock_sfv]
499506

500507
update_feature_freshness(mock_store)
501508

@@ -504,6 +511,11 @@ def test_sets_freshness_for_materialized_views(self):
504511
)._value.get()
505512
assert 280 < staleness < 320
506513

514+
sfv_staleness = feature_freshness_seconds.labels(
515+
feature_view="test_sfv", project="test_project"
516+
)._value.get()
517+
assert 280 < sfv_staleness < 320
518+
507519
def test_skips_unmaterialized_views(self):
508520
mock_fv = MagicMock()
509521
mock_fv.name = "unmaterialized_fv"
@@ -512,6 +524,7 @@ def test_skips_unmaterialized_views(self):
512524
mock_store = MagicMock()
513525
mock_store.project = "test_project"
514526
mock_store.list_feature_views.return_value = [mock_fv]
527+
mock_store.list_stream_feature_views.return_value = []
515528

516529
update_feature_freshness(mock_store)
517530

@@ -525,6 +538,7 @@ def test_handles_naive_datetime(self):
525538
mock_store = MagicMock()
526539
mock_store.project = "test_project"
527540
mock_store.list_feature_views.return_value = [mock_fv]
541+
mock_store.list_stream_feature_views.return_value = []
528542

529543
update_feature_freshness(mock_store)
530544

0 commit comments

Comments
 (0)