-
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: Add online_read_async for dynamodb #4244
Conversation
Signed-off-by: robhowley <[email protected]>
Signed-off-by: robhowley <[email protected]>
Signed-off-by: robhowley <[email protected]>
Signed-off-by: robhowley <[email protected]>
feat: online_read_async for dynamodb
Signed-off-by: robhowley <[email protected]>
@@ -476,7 +476,7 @@ def test_online_retrieval_with_event_timestamps(environment, universal_data_sour | |||
|
|||
|
|||
@pytest.mark.integration | |||
@pytest.mark.universal_online_stores(only=["redis"]) | |||
@pytest.mark.universal_online_stores(only=["redis", "dynamodb"]) |
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.
add dynamo to the async online store tests
fyi @tokoko @breno-costa |
Signed-off-by: robhowley <[email protected]>
Signed-off-by: robhowley <[email protected]>
Signed-off-by: robhowley <[email protected]>
Signed-off-by: robhowley <[email protected]>
Signed-off-by: robhowley <[email protected]>
…response Signed-off-by: robhowley <[email protected]>
@@ -20,32 +20,38 @@ charset-normalizer==3.3.2 | |||
# via requests | |||
click==8.1.7 | |||
# via | |||
# feast (setup.py) |
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.
just curious, what command did you run to lock these files? I'm not sure why this feast (setup.py)
lines are being added 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.
make lock-python-dependencies PYTHON=3.xx
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.
+1
unclear what the failure in
@franciscojavierarceo im assuming you have perms for a rerun? 🙏 |
def to_tbl_resp(raw_client_response): | ||
return { | ||
"entity_id": deserialize(raw_client_response["entity_id"]), | ||
"event_ts": deserialize(raw_client_response["event_ts"]), | ||
"values": deserialize(raw_client_response["values"]), | ||
} |
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 dynamo client returns stuff in the form
{ "field_name": {"TYPE": "value"}}
as opposed to the resource which just returns
{ "field_name": value}
dynamodb has a deserializer utility to do the conversion
@robhowley I created a benchmark repo to test redis async implementation. If you want to make use of it to test your changes. You should be able to install your Feast version here and configure the dynamodb here. |
I reran and it looks like a bucket issue failed. will have to dig into this more later. CC @lokeshrangineni @jeremyary @tokoko |
return self._aioboto_session | ||
|
||
def _get_aiodynamodb_client(self, region: str): | ||
return self._get_aioboto_session().create_client("dynamodb", region_name=region) |
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.
Not too sure about this, but is it a good idea to recreate client object on every call? Isn't there a performance penalty?
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 docs demonstrate and recommend usage within an async context manager. it is possible manually work with _exit_stack.enter_async_context
at app startup/shutdown but wanted to avoid using protected methods and adding app complexity without first knowing it was really needed. seemed like an "as needed follow up" type of investigation.
Definitely flaky, this just errored out other docs-only PR as well. I think we were missing this before because @robhowley Can you comment out this line here for now? I'll try to reenable it later... |
Signed-off-by: robhowley <[email protected]>
Signed-off-by: robhowley <[email protected]>
setup.py
Outdated
@@ -84,7 +84,7 @@ | |||
"hiredis>=2.0.0,<3", | |||
] | |||
|
|||
AWS_REQUIRED = ["boto3>=1.17.0,<2", "docker>=5.0.2", "fsspec<=2024.1.0"] | |||
AWS_REQUIRED = ["boto3>=1.17.0,<2", "docker>=5.0.2", "fsspec<=2024.1.0", "aiobotocore>=2.13.0"] |
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 the lower bound necessary here? maybe just put a >2,<3
unless there's some specific reason
Signed-off-by: robhowley <[email protected]>
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.
lgtm, thanks
# [0.39.0](v0.38.0...v0.39.0) (2024-06-18) ### Bug Fixes * Feast UI importlib change ([#4248](#4248)) ([5d486b8](5d486b8)) * Feature server no_feature_log argument error ([#4255](#4255)) ([15524ce](15524ce)) * Feature UI Server image won't start in an OpenShift cluster ([#4250](#4250)) ([4891f76](4891f76)) * Handles null values in data during GO Feature retrieval ([#4274](#4274)) ([c491e57](c491e57)) * Make Java gRPC client use timeouts as expected ([#4237](#4237)) ([f5a37c1](f5a37c1)) * Remove self assignment code line. ([#4238](#4238)) ([e514f66](e514f66)) * Set default values for feature_store.serve() function ([#4225](#4225)) ([fa74438](fa74438)) ### Features * Add online_read_async for dynamodb ([#4244](#4244)) ([b5ef384](b5ef384)) * Add the ability to list objects by `tags` ([#4246](#4246)) ([fbf92da](fbf92da)) * Added deadline to gRPC Java client ([#4217](#4217)) ([ff429c9](ff429c9)) * Adding vector search for sqlite ([#4176](#4176)) ([2478831](2478831)) * Change get_online_features signature, move online retrieval functions to utils ([#4278](#4278)) ([7287662](7287662)) * Feature/adding remote online store ([#4226](#4226)) ([9454d7c](9454d7c)) * List all feature views ([#4256](#4256)) ([36a574d](36a574d)) * Make RegistryServer writable ([#4231](#4231)) ([79e1143](79e1143)) * Remote offline Store ([#4262](#4262)) ([28a3d24](28a3d24)) * Set optional full-scan for deletion ([#4189](#4189)) ([b9cadd5](b9cadd5))
What this PR does / why we need it:
Which issue(s) this PR fixes:
Fixes