Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Jan 14, 2026

What this PR does / why we need it:

This PR addresses a common misunderstanding about Feast's apply behavior. Users expect that removing feature definitions from their code and running feast apply or FeatureStore.apply() will delete those objects from the registry, but that's not how Feast works. Objects must be explicitly deleted using dedicated delete methods or CLI commands.

This PR adds comprehensive documentation to clarify this behavior and guide users on the correct way to delete objects from the Feast registry, including full documentation for the feast delete CLI command.

Changes Made

Documentation Updates

  • docs/getting-started/components/registry.md: Added new "Deleting objects from the registry" section with:
    • Clear warning that removing code and running feast apply doesn't delete objects
    • CLI-first approach with feast delete command examples
    • Examples of using Python SDK methods like delete_feature_view() and delete_feature_service()
    • Examples of using registry delete methods for entities, data sources, saved datasets, and validation references
  • docs/reference/feast-cli-commands.md:
    • Added feast delete command to the commands overview
    • Created comprehensive "Delete" section with usage examples, warnings, and best practices
    • Added info box to the feast apply section clarifying that it only registers/updates objects found in code, with reference to delete command
  • sdk/python/feast/feature_store.py: Enhanced the apply() method docstring to explicitly state it doesn't delete objects removed from the provided list

Code Quality

  • ✅ Ran make format-python - 670 files left unchanged
  • ✅ Ran make lint-python - All checks passed

Misc

The original issue report was based on a misunderstanding of Feast's expected behavior. The documentation now clearly explains that deletion requires explicit method calls (via Python SDK) or the feast delete CLI command rather than implicit removal through apply.

Original prompt

This section details on the original issue you should resolve

<issue_title>Bug report: not sync deleted feature views in feast ui server when using python sdk</issue_title>
<issue_description>cc. @franciscojavierarceo @HaoXuAI

Expected Behavior

Feast ui server always sync status based on registry file.

Current Behavior

After deleting feature view, entities and others, Feast ui server still shows the deprecated object in the ui server.
The issue only occurs with using python sdk. The issue can be reproducible in localhost(using local registry).

FYI. The issue doesn't occur in cli(ex. feast apply).

Steps to reproduce

For the reproducible issue, I attached my source code scripts.

  • data directory: my sample dataset for reproducing this issue.
  • feature_store.yaml : use yaml file when using feast CLI (this issue not occurs using cli but occurs using python-sdk
  • register.py : scripts for apply action with cli and python sdk

[Steps(with python-sdk)]
(1). Run command in shell: python register.py && feast apply And can find all feature views that defined in feast ui server.
(2). Intentionally comment deal keyword-related feature entity, source, feature view defined in register.py script.
(3). Re-run command in shell: python register.py && feast apply
-> Result: After (3) steps, I expected that the deal_type_fv feature view didn't show in ui server but the feature view, entity is still in it.

Specifications

  • Version: feast python sdk version is 0.56.0
  • Platform: MacOS Sonoma 14.6.1 64bit
  • Subsystem:

Possible Solution

I don't know how to fix it.

Attachment

I attach my source codes for reproducible issue.

archive.tar.gz</issue_description>

<agent_instructions>The feast UI appears to cache the registry metadata that is resulting in users not having their FVs rendered correctly (i.e., deleted Feature Views). Please investigate the UI.</agent_instructions>

Comments on the Issue (you are @copilot in this section)


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI self-assigned this Jan 14, 2026
Copilot AI and others added 3 commits January 14, 2026 14:00
…le modifications

Co-authored-by: franciscojavierarceo <4163062+franciscojavierarceo@users.noreply.github.com>
Co-authored-by: franciscojavierarceo <4163062+franciscojavierarceo@users.noreply.github.com>
Co-authored-by: franciscojavierarceo <4163062+franciscojavierarceo@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix sync issue for deleted feature views in Feast UI server fix: UI server not detecting deleted feature views when using Python SDK Jan 14, 2026
# 3. This ensures deleted feature views (via Python SDK) are immediately detected
# 4. This is internal Feast code, so using internal APIs is acceptable
current_registry_proto = store.registry._get_registry_proto(
project=None, allow_cache=True

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why are we pulling when project=None, feels like that won't return anything useful.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed to use store.project instead of None for better semantic clarity. While the project parameter isn't used in the current Registry implementation logic (it returns the full registry proto regardless), passing the actual project makes the intent clearer. Commit: 8f66298

@franciscojavierarceo
Copy link
Member

The UI server cached a serialized registry proto that only refreshed based on TTL, missing file modifications made by the Python SDK. When feature views were deleted via Python SDK and store.apply(), the UI continued showing them until the next TTL-triggered refresh.

You say this but how do you know? I don't see a test for this that confirms it. Also, please run make format-python and make lint-python and fix any lint issues.

Co-authored-by: franciscojavierarceo <4163062+franciscojavierarceo@users.noreply.github.com>
Copy link
Member

@franciscojavierarceo franciscojavierarceo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These changes aren't necessary.

After looking more at the user's example, it was a poor documentation.

The user expects that commenting out a feature and running feast apply or FeatureStore.apply([_subset_of_feast_objects_]) would delete previously registered objects. That's not the expected behavior.

Users have to explicitly delete objects in Feast and we have a set of class methods to support that. Instead, @copilot, can you update the documentation for the registry (or where appropriate) that deleting objects in the feast registry requires running the explicit delete commands. Please review the different class methods (e.g., FeatureStore.delete_entity, FeatureStore.delete_data_source, etc.).

…n requirements

Co-authored-by: franciscojavierarceo <4163062+franciscojavierarceo@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Jan 14, 2026

These changes aren't necessary.

After looking more at the user's example, it was a poor documentation....

Reverted all code changes and added comprehensive documentation clarifying that deletion requires explicit methods. Updated:

  1. Registry docs with dedicated deletion section and examples
  2. CLI docs with warning about feast apply not deleting removed objects
  3. FeatureStore.apply() docstring

All changes in commit cf1b528.

The UI server cached a serialized registry proto that only refreshed based on TTL, missing file modifications made by the Python SDK. When feature views were deleted via Python SDK and store.apply(),...

After review, the original issue was a documentation problem, not a bug. Users expected feast apply to delete objects removed from code, but that's not the intended behavior. Reverted all code changes and added documentation clarifying explicit deletion is required. Ran make format-python and make lint-python - all checks passed. Commit cf1b528.

Copilot AI changed the title fix: UI server not detecting deleted feature views when using Python SDK docs: clarify that feast apply does not delete objects removed from code Jan 14, 2026
@franciscojavierarceo
Copy link
Member

@copilot can you also update the CLI documentation?

Co-authored-by: franciscojavierarceo <4163062+franciscojavierarceo@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Jan 14, 2026

@copilot can you also update the CLI documentation?

Added comprehensive CLI documentation for the feast delete command. Updated:

  1. CLI reference with Delete section including usage, examples, and warnings
  2. Commands overview to list the delete command
  3. Registry docs to prioritize CLI delete command as the simplest approach

Commit 5195dc9.

Copilot AI changed the title docs: clarify that feast apply does not delete objects removed from code docs: clarify that feast apply does not delete objects and document feast delete CLI Jan 14, 2026
Copy link
Member

@franciscojavierarceo franciscojavierarceo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice!

@franciscojavierarceo franciscojavierarceo changed the title docs: clarify that feast apply does not delete objects and document feast delete CLI docs: Carify that feast apply does not delete objects and document feast delete CLI Jan 14, 2026
@franciscojavierarceo franciscojavierarceo changed the title docs: Carify that feast apply does not delete objects and document feast delete CLI docs: Clarify that feast apply does not delete objects and document feast delete CLI Jan 14, 2026
@franciscojavierarceo franciscojavierarceo marked this pull request as ready for review January 14, 2026 15:37
@franciscojavierarceo franciscojavierarceo requested a review from a team as a code owner January 14, 2026 15:37
@franciscojavierarceo franciscojavierarceo merged commit d77bf50 into master Jan 14, 2026
21 of 24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug report: not sync deleted feature views in feast ui server when using python sdk

2 participants