[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