[Bug 2015286] Re: update-manager unusable due to TimeoutError in uaclient
Benjamin Drung
2015286 at bugs.launchpad.net
Thu Apr 13 17:39:38 UTC 2023
** Changed in: update-manager (Ubuntu)
Importance: Undecided => High
** Changed in: update-manager (Ubuntu)
Status: New => Fix Committed
--
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:
Fix Committed
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