jira-cli icon indicating copy to clipboard operation
jira-cli copied to clipboard

auth failure from stored creds results in "RecursionError: maximum recursion depth exceeded while calling a Python object"

Open eweiman opened this issue 3 years ago • 0 comments

Attempting to view or search for an issue from jira-cli results in a nearly 1000 line traceback ending with: RecursionError: maximum recursion depth exceeded while calling a Python object

Apparently this was due to an old password in the stored credential file.

An auth failure should fail more gracefully and indicate why there's a failure vs a long traceback that on the surface means nothing. I see no logical reason for an authentication failure to enter a recursion loop like this.

Here's a small excerpt of the traceback:

  File "/usr/local/bin/jira-cli", line 8, in <module>
    sys.exit(cli())
  File "/usr/local/lib/python3.6/site-packages/jiracli/interface.py", line 338, in cli
    protocol=post_args.protocol or config.protocol or 'rest'
  File "/usr/local/lib/python3.6/site-packages/jiracli/interface.py", line 108, in initialize
    jira.login(**auth_kwargs)
  File "/usr/local/lib/python3.6/site-packages/jiracli/bridge/rest.py", line 118, in login
    get_server_info=False, validate=False, **auth_kwargs
  File "/usr/local/lib/python3.6/site-packages/jira/client.py", line 462, in __init__
    user = self.session(auth)
  File "/usr/local/lib/python3.6/site-packages/jira/client.py", line 2446, in session
    r = self._session.post(url, data=json.dumps(authentication_data))
  File "/usr/local/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
    return self.__verb('POST', url, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
    response = method(url, timeout=self.timeout, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/requests/sessions.py", line 522, in post
    return self.request('POST', url, data=data, json=json, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/requests/sessions.py", line 475, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.6/site-packages/requests/sessions.py", line 602, in send
    r = dispatch_hook('response', hooks, r, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/requests/hooks.py", line 31, in dispatch_hook
    _hook_data = hook(hook_data, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
    self.init_session()
  File "/usr/local/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
    self.start_session()
  File "/usr/local/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
    self._get_session(self.__auth)
  File "/usr/local/lib/python3.6/site-packages/jira/client.py", line 2446, in session
    r = self._session.post(url, data=json.dumps(authentication_data))
  File "/usr/local/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
    return self.__verb('POST', url, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
    response = method(url, timeout=self.timeout, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/requests/sessions.py", line 522, in post
    return self.request('POST', url, data=data, json=json, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/requests/sessions.py", line 475, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.6/site-packages/requests/sessions.py", line 602, in send
    r = dispatch_hook('response', hooks, r, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/requests/hooks.py", line 31, in dispatch_hook
    _hook_data = hook(hook_data, **kwargs)
<<< output trimmed from issue >>>
  File "/usr/lib64/python3.6/_collections_abc.py", line 839, in update
    if isinstance(other, Mapping):
  File "/usr/lib64/python3.6/abc.py", line 184, in __instancecheck__
    if subclass in cls._abc_cache:
RecursionError: maximum recursion depth exceeded while calling a Python object

eweiman avatar Apr 07 '21 18:04 eweiman