You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
apply_data_source method matches by name only, without filtering by project in shared registry scenario #6206
The issue is in sdk/python/feast/infra/registry/registry.py. When multiple projects share the same registry and have data sources with the same name (like the default vals_to_add), the apply_data_source method matches by name only, without filtering by project, causing cross-project overwriting.
Correctly scoped (name + project):
apply_entity (line 349-352):
if (existing_entity_proto.spec.name == entity_proto.spec.name
and existing_entity_proto.spec.project == project):
apply_feature_service (line 447-451):
if (existing_feature_service_proto.spec.name == feature_service_proto.spec.name
and existing_feature_service_proto.spec.project == project):
apply_feature_view (line 779-781):
if (existing_feature_view_proto.spec.name == feature_view_proto.spec.name
and existing_feature_view_proto.spec.project == project):
BUG - name-only matching, no project filter:
apply_data_source (line 396-397):
for idx, existing_data_source_proto in enumerate(registry.data_sources):
if existing_data_source_proto.name == data_source.name:
delete_data_source (line 426):
if data_source_proto.name == name:
Steps to reproduce
feast apply for project test registers vals_to_add with project=test
feast apply for project test1 iterates all data_sources, finds vals_to_add from project test (matched by name only, no project check)
The equality check fails (they differ - at minimum different internal state), so it deletes the test version and adds a new one with project=test1
Specifications
Version: latest
Possible Solution
The fix would be to add the project filter to both apply_data_source and delete_data_source:
# apply_data_source fix (line 397):
if existing_data_source_proto.name == data_source.name and existing_data_source_proto.project == project:
# delete_data_source fix (line 426):
if data_source_proto.name == name and data_source_proto.project == project:
Hi! I'm a professional trainee interested in contributing to Feast. I've recently worked on XGBoost and data engineering projects. I'd love to take this on as my first issue! Could you assign it to me?
Activity
fix: scope data source operations by project in shared registry
megha2720 commentedon Apr 2, 2026
Hi! I'm a professional trainee interested in contributing to Feast. I've recently worked on XGBoost and data engineering projects. I'd love to take this on as my first issue! Could you assign it to me?
ntkathole commentedon Apr 2, 2026
@megha2720 Thanks for showing interest, I don;t see any response from @mango766 on PR raised for this issue, feel free to pick it up.
fix: add project filter to apply_data_source in shared registry
fix: add project filter to apply_data_source and delete_data_source
fix: add project filter to apply_data_source and delete_data_source
fix: Add project filter to apply_data_source and delete_data_source
test: add cross-project isolation tests for apply/delete_data_source
test: add cross-project isolation tests for apply/delete_data_source
fix: Add project filter to apply_data_source and delete_data_source (f…
test: add cross-project isolation tests for apply/delete_data_source
fix: Add project filter to apply_data_source and delete_data_source (f…
test: add cross-project isolation tests for apply/delete_data_source
fix: Add project filter to apply_data_source and delete_data_source (c…
chore(release): release 0.63.0