Re: recover from broken yum transaction

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

 



On Mon, 22 Sep 2008, seth vidal wrote:

On Mon, 2008-09-22 at 15:47 -0300, Alexandre Oliva wrote:

Right.  The problem is when you agree to "update x", i.e., "install
x-N+1; remove x-N', and it fails (say, in case sys.stdout.write or
sys.stdout.flush raise an exception within callback) before it gets to
install x-N+1.  Then RPM still ends up removing x-N, although
sometimes what I saw looked more like a --justdb removal (files and
libraries left behind, but package gone from the rpmdb), but in
others, as in the most recent case, elfutils libraries were really
gone.

The above really isn't possible. If you can recreate this then please
file a bug. File the bug against rpm but please cc me on it.

I wouldn't call it impossible, in fact I just managed to reproduce it with this:
--- a/yum/rpmtrans.py
+++ b/yum/rpmtrans.py
@@ -374,6 +374,7 @@ class RPMTransaction:
                 self.total_installed += 1
                 self.complete_actions += 1
                 self.installed_pkg_names.append(hdr['name'])
+                raise IOError
             return fd
         else:
             self.display.errorlog("Error: No Header to INST_OPEN_FILE")


Without having yet looked deeper into it, it probably comes down to this in rpmtsRun():
    /*
     * XXX This has always been a hack, now mostly broken.
     * If install failed, then we shouldn't erase.
     */

The hack in question is easily fooled, and so rpm is ultimately responsible for the damage that results from yum code tracebacking in the transaction callback. Rpm needs fixing (I'll go look into it right now), but I'd suggest you go and comb through the ts callback code in yum - you do NOT want it tracebacking, especially on "trivial" things like sys.stdout operations failing.

	- Panu -

--
fedora-devel-list mailing list
fedora-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/fedora-devel-list

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]
  Powered by Linux