You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@atlas.apache.org by "Maxim Martynov (Jira)" <ji...@apache.org> on 2022/09/16 14:26:00 UTC

[jira] [Created] (ATLAS-4676) Atlas 401 response make Python client fail with JSON decode error

Maxim Martynov created ATLAS-4676:
-------------------------------------

             Summary: Atlas 401 response make Python client fail with JSON decode error
                 Key: ATLAS-4676
                 URL: https://issues.apache.org/jira/browse/ATLAS-4676
             Project: Atlas
          Issue Type: Bug
          Components: atlas-intg
    Affects Versions: 2.1.0
            Reporter: Maxim Martynov


I've tried to use apache-atlas Python client to get an entity via API, but passed wrong password. Instead of 401 HTTP error I've got:
{code:java}
~/.local/lib/python3.7/site-packages/apache_atlas/client/entity.py in get_entity_by_attribute(self, type_name, uniq_attributes, min_ext_info, ignore_relationships)
    123 
    124         return self.client.call_api(EntityClient.GET_ENTITY_BY_UNIQUE_ATTRIBUTE.format_path_with_params(type_name),
--> 125                                     AtlasEntityWithExtInfo, query_params)
    126 
    127     def get_entities_by_guids(self, guids, min_ext_info=False, ignore_relationships=False):

~/.local/lib/python3.7/site-packages/apache_atlas/client/base_client.py in call_api(self, api, response_type, query_params, request_obj)
    116             return None
    117         else:
--> 118             raise AtlasServiceException(api, response)

~/.local/lib/python3.7/site-packages/apache_atlas/exceptions.py in __init__(self, api, response)
     36             msg = "Metadata service API with url {url} and method {method} : failed with status {status} and " \
     37                   "Response Body is :{response}". \
---> 38                 format(**{'url': response.url, 'method': api.method, 'status': status, 'response': response.json()})
     39 
     40         Exception.__init__(self, msg)

/opt/anaconda/envs/jh-py37-conda/lib/python3.7/site-packages/requests/models.py in json(self, **kwargs)
    898                     # used.
    899                     pass
--> 900         return complexjson.loads(self.text, **kwargs)
    901 
    902     @property

/opt/anaconda/envs/jh-py37-conda/lib/python3.7/json/__init__.py in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
    346             parse_int is None and parse_float is None and
    347             parse_constant is None and object_pairs_hook is None and not kw):
--> 348         return _default_decoder.decode(s)
    349     if cls is None:
    350         cls = JSONDecoder

/opt/anaconda/envs/jh-py37-conda/lib/python3.7/json/decoder.py in decode(self, s, _w)
    335 
    336         """
--> 337         obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    338         end = _w(s, end).end()
    339         if end != len(s):

/opt/anaconda/envs/jh-py37-conda/lib/python3.7/json/decoder.py in raw_decode(self, s, idx)
    353             obj, end = self.scan_once(s, idx)
    354         except StopIteration as err:
--> 355             raise JSONDecodeError("Expecting value", s, err.value) from None
    356         return obj, end

JSONDecodeError: Expecting value: line 1 column 1 (char 0) {code}

This is caused by this line:
https://github.com/apache/atlas/blob/146835ef03158d87defa1ef082decf9e05becbb0/intg/src/main/python/apache_atlas/exceptions.py#L38

Client can get not only JSON, but an empty string, or HTML page (if Atlas is running behind nginx as a reverse proxy).



--
This message was sent by Atlassian Jira
(v8.20.10#820010)