Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.1.0
-
None
Description
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:
~/.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)
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).