-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
Expected Behavior
running feast serve with a feature_store.yaml has go_feature_serving: True or with --go starts up a Go Server. Using feast server --type=grpc starts up a gRPC server
Current Behavior
When running a feast serve command where the feature_store.yaml has go_feature_serving: True will just start up an HTTP server and ignore your Go Serving config
OR if you explicitly use --go as defined in the documentation - it tells you it doesnt know what to do with Go
If you run feast serve --type=grpc a ValueError: Python server only supports 'http'. Got 'grpc' instead. is raised. The documentation (https://docs.feast.dev/reference/feature-servers/go-feature-server) explicitly talks about the support of Go Serving (and gRPC) and it just plainly does not do that.
After investigating the source code, it's clear that there cli serve command will always use an http type (even though it tells you that you can use both: https://github.com/feast-dev/feast/blob/master/sdk/python/feast/cli.py#L635C1-L642C2. When running a store.serve() there will only be HTTP servers created.
It looks like this was purposefully removed in 0.30.2 but no one ever updated the docs or the click helpers? https://github.com/feast-dev/feast/releases/tag/v0.30.2. It would be best to put this in the documentation so that the documentation actually represents what given version can do. Every branch claims to have this functionality
While the Go Server was always marked as an Alpha feature, this is a huge downer frankly - the marketed ability to use a Go-based server for performance improvements and interact with the server via gRPC was a major draw to the tool. It appears it was never going to be able to do either of those thing unfortunately.
Steps to reproduce
Basically just follow the instructions on how to use a Go Server and it wont work:
project: my_feature_repo
registry: data/registry.db
provider: local
online_store:
type: redis
connection_string: "localhost:6379"
go_feature_serving: True
feast serve <- just starts up an HTTP server
feast serve --go <- does know what the --go flag is
feast serve --type=grpc -<- raises ValueError: Python server only supports 'http'. Got 'grpc' instead.
Specifications
- Version: 0.35.0 (I know we can use 0.29.0 to use Go but not gRPC)
- Platform: Same issue on both MacOS 12.6.2 and Linux systems
- Subsystem:
Possible Solution
Put Go servers back in and support gRPC