Skip to content

SQL Registry does not populate cache correctly #3430

Closed

Description

@cbarcroft

Expected Behavior

Using SQL registry, should be able to retrieve online features for an existing feature view using the Python SDK.

Current Behavior

FeatureStore.get_online_features() currently returns a FeatureviewNotFoundException, despite the feature view existing as evidenced by the output of FeatureStore.list_feature_views().

Steps to reproduce

  1. Configure feature store using an SQL registry
  2. Create a feature view
  3. Materialize data to online store for the feature view
  4. Attempt to retrieve the online features using FeatureStore.get_online_features()

Specifications

  • Version: 0.27.1
  • Platform: macOS Monterey 12.4
  • Python 3.9.16
  • SQL Registry, using postgres on an AWS AuroraDB instance

Possible Solution

This error seems to be specific to the SQL registry, as I have followed the exact same steps using a File registry and there is no issue. I can also circumvent the error by disabling the cache for the SQL registry, so it seems localized to the SQL registry cache itself. The feature views are successfully retrieved, but are rejected by this line because their spec does not have a project.

It appears that normally, the project is attached to the proto spec right before committing registry changes (like so, but the SQL registry does not do this and instead relies on each class's to_proto() output, which does not contain the project. This issue appears to extend to other types of objects as well (entities, etc.)

Activity

  1. changed the title [-]SQL Registry fails to retrieve online features[/-] [+]SQL Registry does not populate cache correctly[/+] on Jan 5, 2023
  2. cbarcroft commented on Jan 5, 2023

    @cbarcroft
    ContributorAuthor

    Confirmed issue still exists in 0.28.0

  3. cbarcroft commented on Feb 1, 2023

    @cbarcroft
    ContributorAuthor

    Confirmed issue still exists in 0.29.0

  4. EXPEbdodla commented on Feb 1, 2023

    @EXPEbdodla
    Contributor

    We have the same issue and my debugging leads to the same solution as mentioned above.

  5. cbarcroft commented on Feb 1, 2023

    @cbarcroft
    ContributorAuthor

    Incase it's helpful for anyone, I've been using the following fix in my project for a couple of versions now (works in at least 0.27.1 through 0.29.0).

    Replace this line with the following:

                        protos = []
                        for obj in objs:
                            proto = obj.to_proto()
                            if hasattr(proto, "spec"):
                                proto.spec.project = project
                            protos.append(proto)
    
                        registry_proto_field.extend(protos)
    

    I can't guarantee it's totally correct, but I haven't had any problems with it thus far.

  6. linked a pull request that will close this issuefix: Fix SQL Registry cache miss #3482on Feb 5, 2023
  7. EXPEbdodla commented on Feb 28, 2023

    @EXPEbdodla
    Contributor

    Thanks for the fix. Looking forward for the new release. Is there any timeline for the new release?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions