Uploaded image for project: 'Nuxeo Drive '
  1. Nuxeo Drive
  2. NXDRIVE-151

Better handle socket timeout

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Major
    • Resolution: Won't Fix
    • Affects Version/s: 1.3.1107
    • Fix Version/s: 2.0.1004
    • Component/s: Remote client
    • Sprint:
      Sprint Drive 7.1-2
    • Story Points:
      2

      Description

      When the server is taking too much time to answer a request, for example when getting the change summary, Drive only displays the timeout traceback in the logs as an ignored network error and tries indefinitely to connect to the server, possibly creating a new thread each time and saturating the thread pool.

      In such case Drive switches to Offline status with a grey systray icon.
      We could add some information about the reason why it switched offline: because of a timeout, and maybe suspend Drive and let the user resume it manually to try again later.

      Timeout traceback:

      2014-11-17 15:55:48,999 25713 140094518327040 ERROR    nxdrive.synchronizer Traceback of ignored network error: 
      Traceback (most recent call last):
        File "/home/ataillefer/sources/nuxeo/addons/nuxeo-drive/nuxeo-drive-client/nxdrive/synchronizer.py", line 1858, in update_synchronize_server
          server_binding, session=session)
        File "/home/ataillefer/sources/nuxeo/addons/nuxeo-drive/nuxeo-drive-client/nxdrive/synchronizer.py", line 1674, in _get_remote_changes
          summary = remote_client.get_changes(server_binding)
        File "/home/ataillefer/sources/nuxeo/addons/nuxeo-drive/nuxeo-drive-client/nxdrive/client/remote_filtered_file_system_client.py", line 52, in get_changes
          server_binding)
        File "/home/ataillefer/sources/nuxeo/addons/nuxeo-drive/nuxeo-drive-client/nxdrive/client/remote_file_system_client.py", line 228, in get_changes
          server_binding.last_root_definitions))
        File "/home/ataillefer/sources/nuxeo/addons/nuxeo-drive/nuxeo-drive-client/nxdrive/client/base_automation_client.py", line 320, in execute
          resp = self.opener.open(req, timeout=timeout)
        File "/usr/lib/python2.7/urllib2.py", line 400, in open
          response = self._open(req, data)
        File "/usr/lib/python2.7/urllib2.py", line 418, in _open
          '_open', req)
        File "/usr/lib/python2.7/urllib2.py", line 378, in _call_chain
          result = func(*args)
        File "/usr/lib/python2.7/urllib2.py", line 1207, in http_open
          return self.do_open(httplib.HTTPConnection, req)
        File "/usr/lib/python2.7/urllib2.py", line 1180, in do_open
          r = h.getresponse(buffering=True)
        File "/usr/lib/python2.7/httplib.py", line 1030, in getresponse
          response.begin()
        File "/usr/lib/python2.7/httplib.py", line 407, in begin
          version, status, reason = self._read_status()
        File "/usr/lib/python2.7/httplib.py", line 365, in _read_status
          line = self.fp.readline()
        File "/usr/lib/python2.7/socket.py", line 447, in readline
          data = self._sock.recv(self._rbufsize)
      timeout: timed out
      2014-11-17 15:55:53,678 25713 140094518327040 DEBUG    nxdrive.gui.application Switching to online mode for: /home/ataillefer/Nuxeo Drive
      2014-11-17 15:55:53,686 25713 140095116474112 DEBUG    nxdrive.gui.application Updated icon state to: enabled
      

        Attachments

          Activity

            People

            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: