Skip to content

Table existence check fails with a json error when dynamo is unreachable #212

Open
@ryan-lane

Description

@ryan-lane

If dynamo is unreachable when trying to check for table existence, a JSONDecodeError is raised, rather than a TableError. This exception should be caught, and a TableError should be raised instead.

Traceback (most recent call last):
  File "/srv/service/current/manage.py", line 21, in <module>
    manager.run()
  File "/usr/local/lib/service_venv/local/lib/python2.7/site-packages/flask_script/__init__.py", line 412, in run
    result = self.handle(sys.argv[0], sys.argv[1:])
  File "/usr/local/lib/service_venv/local/lib/python2.7/site-packages/flask_script/__init__.py", line 383, in handle
    res = handle(*args, **config)
  File "/usr/local/lib/service_venv/local/lib/python2.7/site-packages/flask_script/commands.py", line 216, in __call__
    return self.run(*args, **kwargs)
  File "/code/example/app/scripts/create_tables.py", line 21, in run
    self._create_table(cls)
  File "/code/example/app/scripts/create_tables.py", line 28, in _create_table
    if not model_cls.exists():
  File "/usr/local/lib/service_venv/local/lib/python2.7/site-packages/pynamodb/models.py", line 658, in exists
    cls._get_connection().describe_table()
  File "/usr/local/lib/service_venv/local/lib/python2.7/site-packages/pynamodb/connection/table.py", line 181, in describe_table
    return self.connection.describe_table(self.table_name)
  File "/usr/local/lib/service_venv/local/lib/python2.7/site-packages/pynamodb/connection/base.py", line 553, in describe_table
    tbl = self.get_meta_table(table_name, refresh=True)
  File "/usr/local/lib/service_venv/local/lib/python2.7/site-packages/pynamodb/connection/base.py", line 399, in get_meta_table
    data = self.example(DESCRIBE_TABLE, operation_kwargs)
  File "/usr/local/lib/service_venv/local/lib/python2.7/site-packages/pynamodb/connection/base.py", line 235, in example
    data = self._make_api_call(operation_name, operation_kwargs)
  File "/usr/local/lib/service_venv/local/lib/python2.7/site-packages/pynamodb/connection/base.py", line 266, in _make_api_call
    data = response.json()
  File "/usr/local/lib/service_venv/local/lib/python2.7/site-packages/botocore/vendored/requests/models.py", line 819, in json
    return json.loads(self.text, **kwargs)
  File "/usr/lib/python2.7/dist-packages/simplejson/__init__.py", line 488, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/dist-packages/simplejson/decoder.py", line 370, in decode
    obj, end = self.raw_decode(s)
  File "/usr/lib/python2.7/dist-packages/simplejson/decoder.py", line 389, in raw_decode
    return self.scan_once(s, idx=_w(s, idx).end())
simplejson.scanner.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions