ipfs-api-mount icon indicating copy to clipboard operation
ipfs-api-mount copied to clipboard

Proper handling of socket timeouts

Open RubenKelevra opened this issue 4 years ago • 6 comments

Currently, socket timeouts are not properly handled (exception while handling an exception).

Uncaught exception from FUSE operation readdir, returning errno.EINVAL.
Traceback (most recent call last):
  File "/usr/lib/python3.8/site-packages/urllib3/connectionpool.py", line 421, in _make_request
    six.raise_from(e, None)
  File "<string>", line 3, in raise_from
  File "/usr/lib/python3.8/site-packages/urllib3/connectionpool.py", line 416, in _make_request
    httplib_response = conn.getresponse()
  File "/usr/lib/python3.8/http/client.py", line 1322, in getresponse
    response.begin()
  File "/usr/lib/python3.8/http/client.py", line 303, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python3.8/http/client.py", line 264, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/usr/lib/python3.8/socket.py", line 669, in readinto
    return self._sock.recv_into(b)
socket.timeout: timed out
 
During handling of the above exception, another exception occurred:
 
Traceback (most recent call last):
  File "/usr/lib/python3.8/site-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/lib/python3.8/site-packages/urllib3/connectionpool.py", line 719, in urlopen
    retries = retries.increment(
  File "/usr/lib/python3.8/site-packages/urllib3/util/retry.py", line 400, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "/usr/lib/python3.8/site-packages/urllib3/packages/six.py", line 735, in reraise
    raise value
  File "/usr/lib/python3.8/site-packages/urllib3/connectionpool.py", line 665, in urlopen
    httplib_response = self._make_request(
  File "/usr/lib/python3.8/site-packages/urllib3/connectionpool.py", line 423, in _make_request
    self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
  File "/usr/lib/python3.8/site-packages/urllib3/connectionpool.py", line 330, in _raise_timeout
    raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='127.0.0.1', port=5001): Read timed out. (read timeout=120)
 
During handling of the above exception, another exception occurred:
 
Traceback (most recent call last):
  File "/usr/lib/python3.8/site-packages/ipfshttpclient/http.py", line 249, in _do_request
    return self._session.request(*args, **kwargs)
  File "/usr/lib/python3.8/site-packages/ipfshttpclient/requests_wrapper.py", line 223, in request
    return super(Session, self).request(method, url, *args, **kwargs)
  File "/usr/lib/python3.8/site-packages/requests/sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3.8/site-packages/requests/sessions.py", line 646, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3.8/site-packages/requests/adapters.py", line 529, in send
    raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPConnectionPool(host='127.0.0.1', port=5001): Read timed out. (read timeout=120)
 
The above exception was the direct cause of the following exception:
 
Traceback (most recent call last):
  File "/usr/lib/python3.8/site-packages/fuse.py", line 734, in _wrapper
    return func(*args, **kwargs) or 0
  File "/usr/lib/python3.8/site-packages/fuse.py", line 960, in readdir
    for item in self.operations('readdir', self._decode_optional_path(path),
  File "/usr/lib/python3.8/site-packages/fuse.py", line 1076, in __call__
    return getattr(self, op)(*args)
  File "/usr/lib/python3.8/site-packages/ipfs_api_mount/__init__.py", line 163, in readdir
    return ['.', '..'] + list(self._ls(self.root + path).keys())
  File "/usr/lib/python3.8/site-packages/ipfs_api_mount/__init__.py", line 56, in ls
    for entry in api.ls(object_id)['Objects'][0]['Links']
  File "/usr/lib/python3.8/site-packages/ipfshttpclient/client/base.py", line 15, in wrapper
    result = func(*args, **kwargs)
  File "/usr/lib/python3.8/site-packages/ipfshttpclient/client/files.py", line 393, in ls
    return self._client.request('/ls', args, decoder='json', **kwargs)
  File "/usr/lib/python3.8/site-packages/ipfshttpclient/http.py", line 50, in wrapper
    return func(self, *args, **merged)
  File "/usr/lib/python3.8/site-packages/ipfshttpclient/http.py", line 369, in request
    ret = self._request(method, url, params, parser, stream,
  File "/usr/lib/python3.8/site-packages/ipfshttpclient/http.py", line 286, in _request
    res = self._do_request(method, url, params=params, stream=stream,
  File "/usr/lib/python3.8/site-packages/ipfshttpclient/http.py", line 253, in _do_request
    six.raise_from(exceptions.TimeoutError(error), error)
  File "<string>", line 3, in raise_from
ipfshttpclient.exceptions.TimeoutError: ReadTimeout: HTTPConnectionPool(host='127.0.0.1', port=5001): Read timed out. (read timeout=120)

RubenKelevra avatar Feb 28 '20 12:02 RubenKelevra