You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@atlas.apache.org by "ASF subversion and git services (Jira)" <ji...@apache.org> on 2022/11/07 08:36:00 UTC

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

    [ https://issues.apache.org/jira/browse/ATLAS-4676?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17629667#comment-17629667 ] 

ASF subversion and git services commented on ATLAS-4676:
--------------------------------------------------------

Commit a43ed6c11d3ca3c8a63b86981c3241365eb60b79 in atlas's branch refs/heads/master from Maxim Martynov
[ https://gitbox.apache.org/repos/asf?p=atlas.git;h=a43ed6c11 ]

ATLAS-4676: do not expect response body to be a valid JSON

Signed-off-by: Madhan Neethiraj <ma...@apache.org>


> 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
>            Priority: Major
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> 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)