Skip to content
This repository was archived by the owner on Nov 10, 2022. It is now read-only.

Commit ecdf15e

Browse files
authored
Fixes large payload runtime exception in Datastore (issue 1633) (feast-dev#2181)
* Fixes runtime exception when feature values are larger than 1500 bytes in Datastore. Datastore indexes values as well as keys so large payloads are disallowed. This change clarifies that values should not be indexed. It avoids google.api_core.exceptions.InvalidArgument: 400 The value of property _ is longer than 1500 bytes. Signed-off-by: Pamela Toman <[email protected]> * Linted Signed-off-by: Pamela Toman <[email protected]>
1 parent 94c780b commit ecdf15e

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

sdk/python/feast/infra/online_stores/datastore.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -196,18 +196,18 @@ def _write_minibatch(
196196
key=key, exclude_from_indexes=("created_ts", "event_ts", "values")
197197
)
198198

199-
entity.update(
200-
dict(
201-
key=entity_key.SerializeToString(),
202-
values={k: v.SerializeToString() for k, v in features.items()},
203-
event_ts=utils.make_tzaware(timestamp),
204-
created_ts=(
205-
utils.make_tzaware(created_ts)
206-
if created_ts is not None
207-
else None
208-
),
209-
)
199+
content_entity = datastore.Entity(
200+
exclude_from_indexes=tuple(features.keys())
210201
)
202+
for k, v in features.items():
203+
content_entity[k] = v.SerializeToString()
204+
entity["key"] = entity_key.SerializeToString()
205+
entity["values"] = content_entity
206+
entity["event_ts"] = utils.make_tzaware(timestamp)
207+
entity["created_ts"] = (
208+
utils.make_tzaware(created_ts) if created_ts is not None else None
209+
)
210+
211211
entities.append(entity)
212212
with client.transaction():
213213
client.put_multi(entities)

0 commit comments

Comments
 (0)