Skip to content

NDB: Query with UserProperty results in "An entity value is not allowed" error #1002

Open
@yihaoWang

Description

@yihaoWang

Thanks for stopping by to let us know something could be better!

PLEASE READ: If you have a support contract with Google, please create an issue in the support console instead of filing on GitHub. This will ensure a timely response.

Please run down the following list and make sure you've tried the usual "quick fixes":

If you are still having issues, please be sure to include as much information as possible:

Environment details

  1. API: Google Cloud NDB
  2. OS type and version: macOS 14.5
  3. Python version: Python 3.10.9 (using pyenv)
  4. google-cloud-ndb version: 2.3.2 (using pip show google-cloud-ndb)

Steps to reproduce

  1. Create a model class with a UserProperty field, such as TestModel.
  2. Use the users.User object to create and store an instance of TestModel.
  3. Attempt to query the stored instance based on the UserProperty.
  4. Observe the error when trying to retrieve the result.

Code example

from google.cloud import ndb

class TestModel(ndb.Model):
    owner = ndb.UserProperty()

from google.appengine.api import users
from junyi.activity.test_model import TestModel
from testutil.gae_model import GAEModelTestCase

class TestTestModel(GAEModelTestCase):
    def test_get_user_data(self):
        user = users.User(email="[email protected]")
        test_model = TestModel(owner=user)
        test_model.put()
        query = TestModel.query().filter(TestModel.owner == user)
        result = query.get()
        print("result", result)

Stack trace

Traceback (most recent call last):
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/_datastore_api.py", line 98, in rpc_call
    result = yield rpc
grpc._channel._MultiThreadedRendezvous: <_MultiThreadedRendezvous of RPC that terminated with:
        status = StatusCode.INVALID_ARGUMENT
        details = "An entity value is not allowed"
        debug_error_string = "UNKNOWN:Error received from peer  {grpc_message:"An entity value is not allowed", grpc_status:3, created_time:"2024-10-07T08:15:48.775244+08:00"}"
>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/yihaowang/junyi/junyiacademy/junyi/activity/test_model_test.py", line 11, in test_get_user_data
    result = query.get()
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/query.py", line 1201, in wrapper
    return wrapped(self, *dummy_args, _options=query_options)
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/utils.py", line 118, in wrapper
    return wrapped(*args, **new_kwargs)
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/utils.py", line 150, in positional_wrapper
    return wrapped(*args, **kwds)
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/query.py", line 2067, in get
    return self.get_async(_options=kwargs["_options"]).result()
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/tasklets.py", line 210, in result
    self.check_success()
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/tasklets.py", line 157, in check_success
    raise self._exception
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/tasklets.py", line 319, in _advance_tasklet
    yielded = self.generator.throw(type(error), error, traceback)
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/query.py", line 2101, in get_async
    results = yield _datastore_query.fetch(options)
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/tasklets.py", line 319, in _advance_tasklet
    yielded = self.generator.throw(type(error), error, traceback)
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/_datastore_query.py", line 116, in fetch
    while (yield results.has_next_async()):
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/tasklets.py", line 319, in _advance_tasklet
    yielded = self.generator.throw(type(error), error, traceback)
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/_datastore_query.py", line 343, in has_next_async
    yield self._next_batch()  # First time
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/tasklets.py", line 319, in _advance_tasklet
    yielded = self.generator.throw(type(error), error, traceback)
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/_datastore_query.py", line 373, in _next_batch
    response = yield _datastore_run_query(query)
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/tasklets.py", line 319, in _advance_tasklet
    yielded = self.generator.throw(type(error), error, traceback)
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/_datastore_query.py", line 1030, in _datastore_run_query
    response = yield _datastore_api.make_call(
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/tasklets.py", line 319, in _advance_tasklet
    yielded = self.generator.throw(type(error), error, traceback)
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/_retry.py", line 97, in retry_wrapper
    raise error
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/_retry.py", line 82, in retry_wrapper
    result = yield result
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/tasklets.py", line 319, in _advance_tasklet
    yielded = self.generator.throw(type(error), error, traceback)
  File "/Users/yihaowang/.pyenv/versions/3.10.9/lib/python3.10/site-packages/google/cloud/ndb/_datastore_api.py", line 102, in rpc_call
    raise error
google.api_core.exceptions.InvalidArgument: 400 An entity value is not allowed

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    api: datastoreIssues related to the googleapis/python-ndb API.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions