GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — fix: Fix Shared SQL/Snowflake registry crashes on cross-project UDF deserialization by ntkathole · Pull Request #6427 · feast-dev/feast

Conversation

@ntkathole

@ntkathole ntkathole commented May 21, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

What this PR does / why we need it:

When multiple Feast projects share a single registry (PostgreSQL, S3, or Snowflake), operations like feast apply, REST API listing (/features/all), and UI dashboard crash with ModuleNotFoundError because the registry eagerly deserializes UDFs (via dill.loads()) from all projects — including those whose Python modules aren't installed in the current environment.

This PR fixes the crash at two layers:

Layer 1: Cache building (proto() method) — SQL & Snowflake registries

  • Added a proto_only parameter to _list_objects() that returns raw protobuf objects without calling from_proto(), completely bypassing dill.loads().
  • Refactored proto() to use _list_objects(proto_only=True) when building the in-memory cache, restoring the clean lister-loop pattern.

Layer 2: REST API / gRPC listing — All registry types

  • Threaded a skip_udf parameter through the registry stack: base_registry → caching_registry / registry / snowflake / remote → proto_registry_utils.
  • gRPC handlers (ListFeatureViews, ListStreamFeatureViews, ListOnDemandFeatureViews, ListAllFeatureViews, ListFeatures) pass skip_udf=True so metadata listing never triggers dill.loads().
  • Preserved full API response fidelity: when skip_udf=True, the raw transformation proto is stored on the Python object and used directly in to_proto(), so the response (including UDF source text, binary body, name, mode) is identical to the non-skip path.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@ntkathole ntkathole self-assigned this May 21, 2026
@ntkathole
ntkathole requested a review from a team as a code owner May 21, 2026 09:44
@ntkathole
ntkathole force-pushed the fix_shared_project_udf branch 3 times, most recently from 6221445 to 8dceb9d Compare May 21, 2026 12:18
franciscojavierarceo
franciscojavierarceo approved these changes May 21, 2026
View reviewed changes
@ntkathole
ntkathole force-pushed the fix_shared_project_udf branch 3 times, most recently from 3693501 to 71c3c95 Compare May 21, 2026 13:30
@ntkathole
fix: Fix shared SQL registry crash - avoid unnecessary UDF deserializ…
263c52e
…ation in proto cache building

Signed-off-by: ntkathole <[email protected]>
@ntkathole
ntkathole force-pushed the fix_shared_project_udf branch from 71c3c95 to 263c52e Compare May 21, 2026 14:01
@ntkathole ntkathole added the ok-to-test label May 22, 2026
@ntkathole
fix: PyJWT 2.10+ added validation that rejects empty HMAC keys
f1cb1c8
Signed-off-by: ntkathole <[email protected]>
@ntkathole
ntkathole merged commit e756ffe into feast-dev:master May 22, 2026
26 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@ntkathole ntkathole mentioned this pull request May 22, 2026
fix(operator): Set appProtocol: grpc on registry gRPC Service #6367
Merged
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@franciscojavierarceo franciscojavierarceo franciscojavierarceo approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

@ntkathole ntkathole

Labels

ok-to-test

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@ntkathole @franciscojavierarceo
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.