[Bug 1830635] Re: Regression: xenial: Uses apt_pkg.Error, which is only available in later versions
Julian Andres Klode
julian.klode at canonical.com
Tue May 28 08:04:46 UTC 2019
Verified 1.1.0~beta1ubuntu0.16.04.5 by running the attached script. It
does properly throw LockFailedException now. It does give you the cause
of the LockFailedException, which we might want to change eventually,
but um, that's just cosmetics, and might even be useful.
# python3 -c "import apt; apt.Cache().update()"
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/apt/cache.py", line 63, in __enter__
return self._lock.__enter__()
SystemError: E:Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python3/dist-packages/apt/cache.py", line 481, in update
with _WrappedLock(apt_pkg.config.find_dir("Dir::State::Lists")):
File "/usr/lib/python3/dist-packages/apt/cache.py", line 66, in __enter__
(self._path, e))
apt.cache.LockFailedException: Failed to lock directory /var/lib/apt/lists/: E:Could not get lock /var/lib/apt/lists
/lock - open (11: Resource temporarily unavailable)
** Tags removed: verification-needed verification-needed-xenial
** Tags added: verification-done verification-done-xenial
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to python-apt in Ubuntu.
https://bugs.launchpad.net/bugs/1830635
Title:
Regression: xenial: Uses apt_pkg.Error, which is only available in
later versions
Status in python-apt package in Ubuntu:
Invalid
Status in python-apt source package in Xenial:
Fix Committed
Bug description:
[Impact]
The last SRU introduced a regression in error handling, where apt_pkg.Error is being caught - but that class is not available in xenial - it still uses SystemError
[Test case]
Run python3 -c "import apt; apt.Cache().update()" while running apt
update.
You should see:
# <command>
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/apt/cache.py", line 468, in update
raise LockFailedException("Failed to lock %s" % lockfile)
apt.cache.LockFailedException: Failed to lock /var/lib/apt/lists/lock
Currently you see:
# <command>
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/apt/cache.py", line 63, in __enter__
return self._lock.__enter__()
SystemError: E:Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python3/dist-packages/apt/cache.py", line 481, in update
with _WrappedLock(apt_pkg.config.find_dir("Dir::State::Lists")):
File "/usr/lib/python3/dist-packages/apt/cache.py", line 64, in __enter__
except apt_pkg.Error as e:
AttributeError: module 'apt_pkg' has no attribute 'Error'
[Regression potential]
It really can't get worse than this. But FWIW: This only affects code paths where we could not lock the lists/ or archives/ directory - they currently throw the AttributeError, and will then throw LockFailedException again - as they did before the SRU.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/python-apt/+bug/1830635/+subscriptions
More information about the foundations-bugs
mailing list