[Bug 2015286] [NEW] update-manager unusable due to TimeoutError in uaclient

Kiwinote 2015286 at bugs.launchpad.net
Tue Apr 4 17:46:08 UTC 2023


Public bug reported:

On a fairly standard installation of lunar (ie no Ubuntu Pro linked
etc), the update-manager can become a non-functional window when
uaclient isn't behaving. This manifests itself in a greyed-out 'checking
for updates' window which doesn't respond to any clicks and can only be
closed by ending the process in the system-monitor.

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/UpdateManager/backend/InstallBackendAptdaemon.py", line 529, in _on_finished
    self._action_done(
  File "/usr/lib/python3/dist-packages/UpdateManager/backend/__init__.py", line 414, in _action_done
    self.window_main.start_available()
  File "/usr/lib/python3/dist-packages/UpdateManager/UpdateManager.py", line 244, in start_available
    self.refresh_cache()
  File "/usr/lib/python3/dist-packages/UpdateManager/UpdateManager.py", line 456, in refresh_cache
    self._get_ua_security_status()
  File "/usr/lib/python3/dist-packages/UpdateManager/UpdateManager.py", line 280, in _get_ua_security_status
    update_result = updates()
                    ^^^^^^^^^
  File "/usr/lib/python3/dist-packages/uaclient/api/u/pro/packages/updates/v1.py", line 84, in updates
    return _updates(UAConfig())
           ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/uaclient/api/u/pro/packages/updates/v1.py", line 88, in _updates
    ua_info = get_ua_info(cfg)
              ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/uaclient/security_status.py", line 195, in get_ua_info
    status_dict = status(cfg=cfg, show_all=True)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/uaclient/status.py", line 380, in status
    response = _unattached_status(cfg)
               ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/uaclient/status.py", line 246, in _unattached_status
    resources = get_available_resources(cfg)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/uaclient/contract.py", line 624, in get_available_resources
    resources = client.request_resources()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/uaclient/contract.py", line 71, in request_resources
    resource_response, headers = self.request_url(
                                 ^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/uaclient/serviceclient.py", line 73, in request_url
    response, headers = util.readurl(
                        ^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/uaclient/util.py", line 322, in readurl
    resp = request.urlopen(req, timeout=timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/urllib/request.py", line 216, in urlopen
    return opener.open(url, data, timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/urllib/request.py", line 519, in open
    response = self._open(req, data)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/urllib/request.py", line 536, in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/urllib/request.py", line 496, in _call_chain
    result = func(*args)
             ^^^^^^^^^^^
  File "/usr/lib/python3.11/urllib/request.py", line 1391, in https_open
    return self.do_open(http.client.HTTPSConnection, req,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/urllib/request.py", line 1352, in do_open
    r = h.getresponse()
        ^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/http/client.py", line 1374, in getresponse
    response.begin()
  File "/usr/lib/python3.11/http/client.py", line 318, in begin
    version, status, reason = self._read_status()
                              ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/http/client.py", line 279, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/socket.py", line 706, in readinto
    return self._sock.recv_into(b)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/ssl.py", line 1278, in recv_into
    return self.read(nbytes, buffer)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/ssl.py", line 1134, in read
    return self._sslobj.read(len, buffer)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TimeoutError: The read operation timed out

In my opinion any misbehaving of the Ubuntu Pro integration in update-
manager (in this specific case probably a 'temporary' server issue)
shouldn't cause update-manager to become dysfunctional, especially to
those not subscribed to Ubuntu Pro.

I have recently seen:
- update-manager unable to install updates for over a month ( LP: #2008280 )
- this issue,
- if you turn wi-fi off and open update-manager, then after clicking ok the update-manager window becomes unresponsive ( LP: #2015113 )
- and undoubtedly there are others to come as this is all without uaclient needing to do anything (ie I have no subscription and lunar is not yet released)

Please consider how you might make the integration of Ubuntu Pro into
update-manager more robust, so that any issues in uaclient don't stop
update-manager from functioning correctly. (ie presumably using a
try/except around the uaclient call is not unreasonable - you might
loose track of any errors that are occurring, but keeping update-manager
working (aka allowing people to install their system updates) is a much
higher priority)

Thanks

** Affects: ubuntu-advantage-tools (Ubuntu)
     Importance: Undecided
         Status: New

** Affects: update-manager (Ubuntu)
     Importance: Undecided
         Status: New

** Also affects: ubuntu-advantage-tools (Ubuntu)
   Importance: Undecided
       Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to update-manager in Ubuntu.
https://bugs.launchpad.net/bugs/2015286

Title:
  update-manager unusable due to TimeoutError in uaclient

Status in ubuntu-advantage-tools package in Ubuntu:
  New
Status in update-manager package in Ubuntu:
  New

Bug description:
  On a fairly standard installation of lunar (ie no Ubuntu Pro linked
  etc), the update-manager can become a non-functional window when
  uaclient isn't behaving. This manifests itself in a greyed-out
  'checking for updates' window which doesn't respond to any clicks and
  can only be closed by ending the process in the system-monitor.

  Traceback (most recent call last):
    File "/usr/lib/python3/dist-packages/UpdateManager/backend/InstallBackendAptdaemon.py", line 529, in _on_finished
      self._action_done(
    File "/usr/lib/python3/dist-packages/UpdateManager/backend/__init__.py", line 414, in _action_done
      self.window_main.start_available()
    File "/usr/lib/python3/dist-packages/UpdateManager/UpdateManager.py", line 244, in start_available
      self.refresh_cache()
    File "/usr/lib/python3/dist-packages/UpdateManager/UpdateManager.py", line 456, in refresh_cache
      self._get_ua_security_status()
    File "/usr/lib/python3/dist-packages/UpdateManager/UpdateManager.py", line 280, in _get_ua_security_status
      update_result = updates()
                      ^^^^^^^^^
    File "/usr/lib/python3/dist-packages/uaclient/api/u/pro/packages/updates/v1.py", line 84, in updates
      return _updates(UAConfig())
             ^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/uaclient/api/u/pro/packages/updates/v1.py", line 88, in _updates
      ua_info = get_ua_info(cfg)
                ^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/uaclient/security_status.py", line 195, in get_ua_info
      status_dict = status(cfg=cfg, show_all=True)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/uaclient/status.py", line 380, in status
      response = _unattached_status(cfg)
                 ^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/uaclient/status.py", line 246, in _unattached_status
      resources = get_available_resources(cfg)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/uaclient/contract.py", line 624, in get_available_resources
      resources = client.request_resources()
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/uaclient/contract.py", line 71, in request_resources
      resource_response, headers = self.request_url(
                                   ^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/uaclient/serviceclient.py", line 73, in request_url
      response, headers = util.readurl(
                          ^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/uaclient/util.py", line 322, in readurl
      resp = request.urlopen(req, timeout=timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3.11/urllib/request.py", line 216, in urlopen
      return opener.open(url, data, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3.11/urllib/request.py", line 519, in open
      response = self._open(req, data)
                 ^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3.11/urllib/request.py", line 536, in _open
      result = self._call_chain(self.handle_open, protocol, protocol +
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3.11/urllib/request.py", line 496, in _call_chain
      result = func(*args)
               ^^^^^^^^^^^
    File "/usr/lib/python3.11/urllib/request.py", line 1391, in https_open
      return self.do_open(http.client.HTTPSConnection, req,
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3.11/urllib/request.py", line 1352, in do_open
      r = h.getresponse()
          ^^^^^^^^^^^^^^^
    File "/usr/lib/python3.11/http/client.py", line 1374, in getresponse
      response.begin()
    File "/usr/lib/python3.11/http/client.py", line 318, in begin
      version, status, reason = self._read_status()
                                ^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3.11/http/client.py", line 279, in _read_status
      line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3.11/socket.py", line 706, in readinto
      return self._sock.recv_into(b)
             ^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3.11/ssl.py", line 1278, in recv_into
      return self.read(nbytes, buffer)
             ^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3.11/ssl.py", line 1134, in read
      return self._sslobj.read(len, buffer)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  TimeoutError: The read operation timed out

  In my opinion any misbehaving of the Ubuntu Pro integration in update-
  manager (in this specific case probably a 'temporary' server issue)
  shouldn't cause update-manager to become dysfunctional, especially to
  those not subscribed to Ubuntu Pro.

  I have recently seen:
  - update-manager unable to install updates for over a month ( LP: #2008280 )
  - this issue,
  - if you turn wi-fi off and open update-manager, then after clicking ok the update-manager window becomes unresponsive ( LP: #2015113 )
  - and undoubtedly there are others to come as this is all without uaclient needing to do anything (ie I have no subscription and lunar is not yet released)

  Please consider how you might make the integration of Ubuntu Pro into
  update-manager more robust, so that any issues in uaclient don't stop
  update-manager from functioning correctly. (ie presumably using a
  try/except around the uaclient call is not unreasonable - you might
  loose track of any errors that are occurring, but keeping update-
  manager working (aka allowing people to install their system updates)
  is a much higher priority)

  Thanks

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ubuntu-advantage-tools/+bug/2015286/+subscriptions




More information about the foundations-bugs mailing list