chiark / gitweb /
transaction: fix detection of cycles involving installed jobs
authorMichal Schmidt <mschmidt@redhat.com>
Sun, 22 Apr 2012 00:09:04 +0000 (02:09 +0200)
committerMichal Schmidt <mschmidt@redhat.com>
Mon, 23 Apr 2012 23:54:14 +0000 (01:54 +0200)
commit4e7bd268ae1f39675988b9ac61b9378a67e3ae3e
tree02384f8f60f2459ea2d3245174a05468a6a79d08
parent055163ad15a5ca1eb5626c63fa7163e152698e2b
transaction: fix detection of cycles involving installed jobs

A transaction can be acyclic, but when it's added to installed jobs,
a cycle may result.

transaction_verify_order_one() attempts to detect these cases, but it
fails because the installed jobs often have the exact generation number
that makes them look as if they were walked already.

Fix it by resetting the generation numbers of all installed jobs before
detecting cycles.

An alternative fix could be to add the generation counter to the
Manager and use it instead of starting always from 1 in
transaction_activate(). But I prefer not having to worry about it
wrapping around.
src/core/transaction.c