Visitar URL original
feat: Implement RegistryServer.Proto RPC with RBAC-filtered response (#6558) by nquinn408 · Pull Request #6552 · feast-dev/feast · GitHub
Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
fix: implement RegistryServer.Proto gRPC method
The remote registry client (RemoteRegistry.proto) calls stub.Proto(Empty())
to fetch the full registry, but the RegistryServer servicer never implemented
the Proto RPC, so remote clients received UNIMPLEMENTED. Return
proxied_registry.proto().

Signed-off-by: Nick Quinn <nicholas_quinn@apple.com>
  • Loading branch information
nickquinn408 committed Jun 25, 2026
commit 89d6d81584ca87d8e20459273b29379ebe7d1b37
4 changes: 4 additions & 0 deletions sdk/python/feast/registry_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
str_to_auth_manager_type,
)
from feast.project import Project
from feast.protos.feast.core.Registry_pb2 import Registry as RegistryProto
from feast.protos.feast.registry import RegistryServer_pb2, RegistryServer_pb2_grpc
from feast.protos.feast.registry.RegistryServer_pb2 import Feature, ListFeaturesResponse
from feast.saved_dataset import SavedDataset, ValidationReference
Expand Down Expand Up @@ -180,6 +181,9 @@ def __init__(self, registry: BaseRegistry) -> None:
super().__init__()
self.proxied_registry = registry

def Proto(self, request: Empty, context) -> RegistryProto:
return self.proxied_registry.proto()

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@nquinn408 it was intentionally removed, so that it won't return all information to the users not having access. Probably proper rbac needs to be added if we need it for any purpose.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I understand @ntkathole but then it breaks RemoteRegistry.proto, so I don't know what the solution is. I guess a different implementation for RemoteRegistry.proto?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

def proto(self) -> RegistryProto:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think we can construct the response by calling each typed List* method (have RBAC checks) rather than forwarding the raw proto().

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Is there an open issue to address? I will give it a shot.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

created #6558

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@ntkathole I restructured this PR to address your issue: #6558. Can you kick off LLM review?


def ApplyEntity(self, request: RegistryServer_pb2.ApplyEntityRequest, context):
entity = cast(
Entity,
Expand Down
Loading