[Bug 2024926] Re: add-apt-repository has a misleading error message when the launchpad api is down

Colin Watson 2024926 at bugs.launchpad.net
Tue Jun 27 00:40:53 UTC 2023


Note that this was due to a very specialized kind of outage, namely
where the machine-readable API description file fetched from
api.launchpad.net refers to api.launchpad.test (which only exists in
some development setups and shouldn't be referred to from production).
This part of the problem was on us (the Launchpad team), and we've fixed
it.

It's also a little surprising, since we had other reports of clients
(including at least one that was also running Ubuntu 22.04) instead
raising the rather clearer `httplib2.error.ServerNotFoundError: Unable
to find the server at api.launchpad.test` (still a bit confusing of
course, but it points to the problem about as well as it can).  I don't
know why `socket.getaddrinfo` would raise `EBUSY` in this case, though.

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

Title:
  add-apt-repository has a misleading error message when the launchpad
  api is down

Status in software-properties package in Ubuntu:
  New

Bug description:
  On Ubuntu 22.04.2
  Package software-properties-common 0.99.22.7
  During the launchpad outage on the 23rd June 2023, add-apt-repository was crashing with the following:
  Traceback (most recent call last):
    File "/usr/bin/add-apt-repository", line 364, in <module>
      sys.exit(0 if addaptrepo.main() else 1)
    File "/usr/bin/add-apt-repository", line 347, in main
      shortcut = handler(source, **shortcut_params)
    File "/usr/lib/python3/dist-packages/softwareproperties/shortcuts.py", line 40, in shortcut_handler
      return handler(shortcut, **kwargs)
    File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 82, in __init__
      if self.lpppa.publish_debug_symbols:
    File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 120, in lpppa
      self._lpppa = self.lpteam.getPPAByName(name=self.ppaname)
    File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 107, in lpteam
      self._lpteam = self.lp.people(self.teamname)
    File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 98, in lp
      self._lp = login_func("%s.%s" % (self.__module__, self.__class__.__name__),
    File "/usr/lib/python3/dist-packages/launchpadlib/launchpad.py", line 494, in login_anonymously
      return cls(
    File "/usr/lib/python3/dist-packages/launchpadlib/launchpad.py", line 230, in __init__
      super(Launchpad, self).__init__(
    File "/usr/lib/python3/dist-packages/lazr/restfulclient/resource.py", line 477, in __init__
      self._browser.get(root_resource), 'application/json')
    File "/usr/lib/python3/dist-packages/lazr/restfulclient/_browser.py", line 439, in get
      response, content = self._request(url, extra_headers=headers)
    File "/usr/lib/python3/dist-packages/lazr/restfulclient/_browser.py", line 389, in _request
      response, content = self._request_and_retry(
    File "/usr/lib/python3/dist-packages/lazr/restfulclient/_browser.py", line 359, in _request_and_retry
      response, content = self._connection.request(
    File "/usr/lib/python3/dist-packages/httplib2/__init__.py", line 1725, in request
      (response, content) = self._request(
    File "/usr/lib/python3/dist-packages/launchpadlib/launchpad.py", line 144, in _request
      response, content = super(LaunchpadOAuthAwareHttp, self)._request(
    File "/usr/lib/python3/dist-packages/lazr/restfulclient/_browser.py", line 184, in _request
      return super(RestfulHttp, self)._request(
    File "/usr/lib/python3/dist-packages/httplib2/__init__.py", line 1441, in _request
      (response, content) = self._conn_request(conn, request_uri, method, body, headers)
    File "/usr/lib/python3/dist-packages/httplib2/__init__.py", line 1363, in _conn_request
      conn.connect()
    File "/usr/lib/python3/dist-packages/httplib2/__init__.py", line 1139, in connect
      address_info = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM)
    File "/usr/lib/python3.10/socket.py", line 955, in getaddrinfo
      for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
  OSError: [Errno 16] Device or resource busy

  
  This was misleading as it seemed to indicate a problem with the client and not with the server. The error message should be improved as to make it clear where the error is located.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/software-properties/+bug/2024926/+subscriptions




More information about the foundations-bugs mailing list