Skip to content

datastore v1beta3 doesn't handle errors properly #1617

@pcostell

Description

@pcostell

In Datastore v1beta3, the error response is a serialized proto message Status. However, the error handling currently tries to decode it, which can fail with a unicode error.


  File "./main.py", line 20, in lookup
    print(client.get(key))
  File "/Users/pcostello/.local/virtualenvs/gcloud-permissions-v1beta3/src/gcloud/gcloud/datastore/client.py", line 248, in get
    deferred=deferred)
  File "/Users/pcostello/.local/virtualenvs/gcloud-permissions-v1beta3/src/gcloud/gcloud/datastore/client.py", line 289, in get_multi
    transaction_id=transaction and transaction.id,
  File "/Users/pcostello/.local/virtualenvs/gcloud-permissions-v1beta3/src/gcloud/gcloud/datastore/client.py", line 122, in _extended_lookup
    transaction_id=transaction_id,
  File "/Users/pcostello/.local/virtualenvs/gcloud-permissions-v1beta3/src/gcloud/gcloud/datastore/connection.py", line 197, in lookup
    _datastore_pb2.LookupResponse)
  File "/Users/pcostello/.local/virtualenvs/gcloud-permissions-v1beta3/src/gcloud/gcloud/datastore/connection.py", line 115, in _rpc
    data=request_pb.SerializeToString())
  File "/Users/pcostello/.local/virtualenvs/gcloud-permissions-v1beta3/src/gcloud/gcloud/datastore/connection.py", line 92, in _request
    raise make_exception(headers, content, use_json=False)
  File "/Users/pcostello/.local/virtualenvs/gcloud-permissions-v1beta3/src/gcloud/gcloud/exceptions.py", line 181, in make_exception
    content = content.decode('utf-8')
  File "/Users/pcostello/.local/virtualenvs/gcloud-permissions-v1beta3/lib/python2.7/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa8 in position 20: invalid start byte

Metadata

Metadata

Assignees

Labels

api: datastoreIssues related to the Datastore API.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions