[packagekit] Yum and locking

Richard Hughes hughsient at gmail.com
Wed Oct 17 10:44:37 PDT 2007

On Wed, 2007-10-17 at 13:37 -0400, Robin Norwood wrote:
> However, the yum commandline uses locking to avoid two yum processes
> walking all over one another (corruping the cache, starting two
> transactions that will conflict, etc, etc).  We've got to do some
> locking here.

Agreed, but we can't just lock the yum process all of the time, see

> The yum cli does locking right after configuration is setup (right about
> where we set the throttle above), and unlocks right after commands
> complete.  To duplicate these, we'd need to lock at about the time we
> set config.throttle, and unlock when the transaction is done - we'd
> probably also need some signal handling for when PK cancels an operation
> in progress.

We could send yum something over stdin before we kill it, although
that's non-ideal.

> I talked to Seth about this a bit today, and he agrees that we must do
> locking.  Even if an operation like a search might be considered 'read
> only', yum may update the cache if it is out of date for a repository -
> two actions running at the same time could do very bad things.  When an
> action is run on a repository, it will automatically update the cache if
> it is out of date.

Is cache invalidation the only thing that needs to be protected? If so
this seems like using a sledgehammer to crack a nut.

> One option we could try is to tell yum to only look in the cache when
> doing synchronous actions:
> yumbase.conf.cache = 1
> We already do this for searching.  However, the cache could be
> invalidated in the middle of a transaction by another yum process
> running without this flag set (like from the commandline).

Is this a problem? Can't yum just detect the cache being invalidated and
recreate it?

> The final option I know of is to add finer grained read/write locking to
> yum, but this would obviously be non-trivial to implement.

This is what has to be done - we can't have people waiting a hour for a
download to complete before they can search for and queue up more

> So my take is that the yum backend needs to be patched to do proper
> locking for all actions, unless and until someone patches yum to allow
> for finer-grained locking.  Which means the yum backend won't be able to
> support synchronous actions at all.

If it has to be done, it has to be done. This will really suck from a
user interface point of view, and most of the time we will be waiting
for something to complete.


More information about the PackageKit mailing list