[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#596793: python-apt: Add a lock argument to apt.Cache.update and apt.Cache.commit



tag 596793 confirmed
thanks

On Tue, Sep 14, 2010 at 09:49:30AM +0200, Sebastian Heinlein wrote:
> Package: python-apt
> Version: 0.7.97.1
> Severity: wishlist
> 
> It would be nice to have a lock argument in the apt.cache.Cache.update()
> and apt.cache.Cache.commit() methods.
> 
> It would allow to pass the fd (int) of an already acquired lock. The
> corresponding methods won't try to get a lock on lists/archives if it's
> given.
> 
> The packagekit backend and aptdaemon try to acquire the locks
> before executing the tasks to give the user an idea which application
> should be closed before the task can be performed, instead of failing
> during the task.
> 
> So currently I have to acquire the locks at the start of a
> transaction, release it again shortly before call e.g. Cache.update()
> and re-aquire them again afterwards until the transaction is done.
> 

In contrast to you, I prefer a property returning an apt_pkg.FileLock
object, which can then be used like:

	with cache.archive_lock:
		cache.commit()
		cache.update()

	# or (possibly with better names)
	cache.archive_lock.__enter__()
	cache.commit()
	cache.update()
	cache.archive_lock.__exit__()
	
Looks a bit more natural, although there is currently no way to get
the fd from the lock (this could be added, though). If called outside
a with block, the functions are the lock themselves (FileLock does
reference-count based locking).

Scheduled for wheezy.
-- 
Julian Andres Klode  - Debian Developer, Ubuntu Member

See http://wiki.debian.org/JulianAndresKlode and http://jak-linux.org/.

Attachment: pgpVIe0D4KjT2.pgp
Description: PGP signature


Reply to: