-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Update the go feature server from Expedia code repo. #4665
base: master
Are you sure you want to change the base?
Conversation
cc: @EXPEbdodla |
80285e6
to
d371247
Compare
[Update 10-22-2024] Now it can compile, build and build docker image. All configures in the Makefile under the "#Go SDK & embedded" are working, except the "install-go-ci-dependencies". The current "install-go-ci-dependencies" is obsoleted. We need to fix it when we setup the integration test for Go feature server. !!Warning, the current version my not function correctly. need more testing and investigating. |
9ee4605
to
c5aaf98
Compare
[Update 10-31-2024]
|
go/internal/feast/registry/http.go
Outdated
@@ -0,0 +1,212 @@ | |||
package registry |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This needs to be switched to remote registry. We built http registry to overcome the password sharing for SQL Registry. HTTP Registry which is FastAPI based is not contributed to Feast. We are also planning to leverage Remote registry and move over from HTTP one.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for the info, @EXPEbdodla ! Let me try to resolve this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have removed the code of HTTP Registry. And now, only the File based Registry is supported.
[Update 11/04/2024]
|
go/internal/feast/featurestore.go
Outdated
} | ||
sanitizedProjectName := strings.Replace(config.Project, "_", "-", -1) | ||
productName := os.Getenv("PRODUCT") | ||
endpoint := fmt.Sprintf("%s-transformations.%s.svc.cluster.local:80", sanitizedProjectName, productName) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this an external Transformation server? I guess we need to remove this and related code? @EXPEbdodla
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Initially transformations are running with GOPY bindings. That's not working at scale. So we implemented it similar to Java Feature Server.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you, @EXPEbdodla I guess I need to work on this part.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I chose an "easy" fix for this. 😿
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes. We should get the transformation server endpoint from feature_store.yaml.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
updated. :)
Signed-off-by: Shuchu Han <[email protected]>
Signed-off-by: Shuchu Han <[email protected]>
Signed-off-by: Shuchu Han <[email protected]>
Signed-off-by: Shuchu Han <[email protected]>
…ntation code. Signed-off-by: Shuchu Han <[email protected]>
Signed-off-by: Shuchu Han <[email protected]>
Signed-off-by: Shuchu Han <[email protected]>
…point. Signed-off-by: Shuchu Han <[email protected]>
b65a6a4
to
953d62e
Compare
[Update 11-20-2024] |
@@ -297,6 +315,10 @@ func (fs *FeatureStore) readFromOnlineStore(ctx context.Context, entityRows []*p | |||
requestedFeatureViewNames []string, | |||
requestedFeatureNames []string, | |||
) ([][]onlinestore.FeatureData, error) { | |||
// Create a Datadog span from context |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think these can be removed or updated as datadog is not part of feast
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yea. Datadog needs to be replaced with OTEL.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes, I will replace them with OTEL after this PR get merged.
} | ||
} | ||
} | ||
|
||
if t == redisNode { | ||
// Metrics are not showing up when the service name is set to DD_SERVICE |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
similar here
@@ -1,109 +1,12 @@ | |||
This directory contains the Go logic that's executed by the `EmbeddedOnlineFeatureServer` from Python. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any reason we are removing the document here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That piece of code is not needed if we remove GOPY bindings.
…re.yaml file instead of OS env. Signed-off-by: Shuchu Han <[email protected]>
[Update 11/24/2024]
@EXPEbdodla @feast-dev/reviewers-and-approvers |
go install google.golang.org/protobuf/cmd/[email protected] | ||
go install google.golang.org/grpc/cmd/[email protected] | ||
|
||
install-go-ci-dependencies: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is all commented out, do we need it?
# go install golang.org/x/tools/cmd/goimports | ||
# python -m pip install "pybindgen==0.22.1" "grpcio-tools>=1.56.2,<2" "mypy-protobuf>=3.1" | ||
|
||
build-go: compile-protos-go |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the inline seems to be at odds with the rest of the Makefile format, could you adjust it?
install-feast-ci-locally: | ||
pip install -e ".[ci]" | ||
|
||
test-go: compile-protos-go compile-protos-python install-feast-ci-locally |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same here
format-go: | ||
gofmt -s -w go/ | ||
|
||
lint-go: compile-protos-go |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same here
@@ -161,13 +181,15 @@ func (fs *FeatureStore) GetOnlineFeatures( | |||
result = append(result, vectors...) | |||
} | |||
|
|||
if fs.transformationCallback != nil { | |||
if fs.transformationCallback != nil || fs.transformationService != nil { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When we go to unify the transformations we'll have to update here too #4584
return featureViewIndices, indicesFeatureView, index | ||
} | ||
|
||
func (r *RedisOnlineStore) buildHsetKeys(featureViewNames []string, featureNames []string, indicesFeatureView map[int]string, index int) ([]string, []string) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit:
func (r *RedisOnlineStore) buildHsetKeys(featureViewNames []string, featureNames []string, indicesFeatureView map[int]string, index int) ([]string, []string) { | |
func (r *RedisOnlineStore) buildRedisHashSetKeys(featureViewNames []string, featureNames []string, indicesFeatureView map[int]string, index int) ([]string, []string) { |
@@ -41,6 +41,7 @@ func NewSqliteOnlineStore(project string, repoConfig *registry.RepoConfig, onlin | |||
return nil, fmt.Errorf("cannot find convert sqlite path to string %s", db_path) | |||
} else { | |||
store.path = fmt.Sprintf("%s/%s", repoConfig.RepoPath, dbPathStr) | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
was this just a lint format change?
registryStoreType := registryConfig.RegistryStoreType | ||
registryPath := registryConfig.Path | ||
r := &Registry{ | ||
cachedRegistryProtoTtl: time.Duration(registryConfig.CacheTtlSeconds), | ||
project: project, | ||
cachedRegistryProtoTtl: time.Duration(registryConfig.CacheTtlSeconds) * time.Second, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems like a pretty large change in time proportional to the number of seconds, no? Was this on purpose?
@@ -91,103 +99,6 @@ func ReleaseArrowContext(requestContextArrow map[string]arrow.Array) { | |||
} | |||
} | |||
|
|||
func CallTransformations( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
rip
What this PR does / why we need it:
Update the improved Go feature server code from ExpediaGroup/Feast to our code repo.
Which issue(s) this PR fixes: