-
Notifications
You must be signed in to change notification settings - Fork 996
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
FeatureStore.get_online_features is broken with int64 vals #1908
Comments
Can you explain why only that range is available today? Where is the existing bug? |
Entity keys of type |
Hi |
Hi! I'm new to feast but I would like to take up this issue if possible. I understand how the error is occurring and the drawbacks of the naive solution. However, for the desired solution, are there any resources that I could look at to understand the encoding scheme and how to work with the versioning? I understand how serialize_entity_key() is used in compute_entity_key() for online stores, but I am unsure on how to 'version' this fix with protobuf. Apologies if that's a beginner question. Thanks! edit: currently looking at https://googleapis.dev/python/protobuf/latest/ for python protobuf generation, please lmk if this is the right direction! thanks :) Would it be recommended to edit the Value.proto file? If I am understanding this issue correctly, a new val can be added (e.g. int64 int64long_val) that can be ignored by past versions in the proto message. This will maintain backwards compatibility while also allowing the current encoding scheme to change? This may not be the desired change though, as this is not a clean fix and may not be best practice to just add a new proto field for every issue like this. Again please correct me if I am mistaken! |
With regards to versioning the encoding scheme as recommended in the original post, is the recommended action to version the proto files themselves? For example, the grpc repo uses a versioning scheme for their protobuf files (https://github.com/grpc/grpc/tree/master/src/proto/grpc/) in the case of a breaking change. To my understanding, this type of fix would maintain backwards compatibility for clients using the older proto version, while also being able to make this change in the proto message and maintaining forwards compatibility. |
Hi! Sorry for the delayed response. You can edit the Value.proto directly, but not sure how this addresses this issue since Value has an int64 field already. Probably it makes more sense to add an encoding version in EntityKeyProto, and then pass it along to the method that achal referred to? |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
Would be great to not close this issue because it's still relevant :) Or should the other one be used to track the progress? |
I am getting the exact same error while materializingMaterializing 652 feature views to 2022-06-11 00:00:00+00:00 into the sqlite online store.
|
Expected Behavior
I should be able to use an int64 value as the join key value for an entity, when the value type is
value_type=ValueType.INT64
.Current Behavior
Only values -2147483648 <= number <= 2147483647 can be used as the value. This is equivalent to -2^31 <= number <= 2^31 - 1
Steps to reproduce
Specify a value greater than 2^31 - 1 as a the join key value when looking up values from the feature store.
Possible Solution
The trivial fix is to make this line use
"q"
as the format string, which refers to asigned long long
value which is 8 bytes in size.Changing this behavior is a backwards incompatible change, since it would change the bytes encoded for an entity key which takes on int64 values. This means that materialized records oh that value type would would be unreadable.
The "correct" way of fixing this would require us to version the encoding scheme in the feature store.
The text was updated successfully, but these errors were encountered: