Bug 613817 - API break: .ts.run() exception has changed
Summary: API break: .ts.run() exception has changed
Alias: None
Product: Fedora
Classification: Fedora
Component: yum
Version: rawhide
Hardware: All
OS: Linux
Target Milestone: ---
Assignee: Seth Vidal
QA Contact: Fedora Extras Quality Assurance
Whiteboard: AcceptedBlocker
Depends On:
Blocks: F14Alpha, F14AlphaBlocker
TreeView+ depends on / blocked
Reported: 2010-07-12 21:16 UTC by John Reiser
Modified: 2014-01-21 23:15 UTC (History)
8 users (show)

Fixed In Version: yum-3.2.27-18.fc14
Doc Type: Bug Fix
Doc Text:
Clone Of:
Last Closed: 2010-07-21 05:06:10 UTC

Attachments (Terms of Use)
saved traceback and debug info from anaconda (629.92 KB, text/plain)
2010-07-12 21:16 UTC, John Reiser
no flags Details
/tmp/anaconda.log (14.22 KB, text/plain)
2010-07-12 21:17 UTC, John Reiser
no flags Details

Description John Reiser 2010-07-12 21:16:19 UTC
Created attachment 431274 [details]
saved traceback and debug info from anaconda

Description of problem: anaconda fails at the beginning of package install from DVD.

Version-Release number of selected component (if applicable):

How reproducible: every time

Steps to Reproduce:
1. Boot DVD from rawhide of 2010-07-12 (Monday), fresh install, basic disks, custom layout, default packages
2. proceed to install packages
Actual results:
anaconda 14.10 exception report
Traceback (most recent call first):
  File "/usr/lib64/python2.6/site-packages/pyanaconda/yuminstall.py", line 1007, in _run
    for (descr, (ty, mount, need)) in probs.value: # FIXME: probs.value???
  File "/usr/lib64/python2.6/site-packages/pyanaconda/yuminstall.py", line 974, in run
    if self._run(instLog, cb, intf) == DISPATCH_BACK:
  File "/usr/lib64/python2.6/site-packages/pyanaconda/yuminstall.py", line 1730, in doInstall
    rc = self.ayum.run(self.instLog, cb, anaconda.intf, anaconda.id)
  File "/usr/lib64/python2.6/site-packages/pyanaconda/backend.py", line 286, in doInstall
    return anaconda.backend.doInstall(anaconda)
  File "/usr/lib64/python2.6/site-packages/pyanaconda/dispatch.py", line 209, in moveStep
    rc = stepFunc(self.anaconda)
  File "/usr/lib64/python2.6/site-packages/pyanaconda/dispatch.py", line 128, in gotoNext
  File "/usr/lib64/python2.6/site-packages/pyanaconda/gui.py", line 1174, in nextClicked
  File "/usr/lib64/python2.6/site-packages/pyanaconda/iw/progress_gui.py", line 79, in renderCallback
  File "/usr/lib64/python2.6/site-packages/pyanaconda/gui.py", line 1195, in handleRenderCallback
ValueError: need more than 1 value to unpack

Expected results: no traceback

Additional info:

Comment 1 John Reiser 2010-07-12 21:17:57 UTC
Created attachment 431275 [details]

13:52:04,161 INFO anaconda: Preparing to install packages
13:52:04,165 INFO anaconda: transferring install image to install target
13:52:27,472 DEBUG anaconda: isys.py:umount()- going to unmount /mnt/stage2, removeDir = True
13:55:51,495 WARN anaconda: /usr/lib64/python2.6/site-packages/pyanaconda/gui.py:491: GtkWarning: gtk_progress_set_percentage: assertion `percentage >= 0 && percentage <= 1.0' failed
  self.progress.set_fraction (newval)

13:55:55,723 CRIT anaconda: anaconda 14.10 exception report

Comment 2 Chris Lumens 2010-07-13 14:16:48 UTC
For some context, here's some more of the code:

        except YumBaseError, probs:
            # FIXME: we need to actually look at these problems...
            probTypes = { rpm.RPMPROB_NEW_FILE_CONFLICT : _('file conflicts'),
                          rpm.RPMPROB_FILE_CONFLICT : _('file conflicts'),
                          rpm.RPMPROB_OLDPACKAGE: _('older package(s)'),
                          rpm.RPMPROB_DISKSPACE: _('insufficient disk space'),
                          rpm.RPMPROB_DISKNODES: _('insufficient disk inodes'),
                          rpm.RPMPROB_CONFLICT: _('package conflicts'),
                          rpm.RPMPROB_PKG_INSTALLED: _('package already installed'),
                          rpm.RPMPROB_REQUIRES: _('required package'),
                          rpm.RPMPROB_BADARCH: _('package for incorrect arch'),
                          rpm.RPMPROB_BADOS: _('package for incorrect os'),

            for (descr, (ty, mount, need)) in probs.value: # FIXME: probs.value???

Has something changed in what YumBaseError looks like?

Comment 3 James Antill 2010-07-13 17:13:27 UTC
I think we may have screwed up here:



--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -1297,7 +1297,12 @@ class YumBase(depsolve.Depsolve):
             if self.conf.history_record:
                 herrors = [to_unicode(to_str(x)) for x in errors]
                 self.history.end(rpmdbv, 2, errors=herrors)
-            raise Errors.YumBaseError, errors
+            self.logger.critical(_("Transaction couldn't start:"))
+            for e in errors:
+                self.logger.critical(e[0]) # should this be 'to_unicoded'?
+            raise Errors.YumBaseError, _("Could not run transaction.")

...where errors is directly from rpm. What we probably need is a specific "YumRpmTransactionFailed" exception which contains .values ... but also prints nicely for the cli.
 Of course testing this is a PITA.

Comment 5 John Reiser 2010-07-15 03:22:25 UTC
Blocks F14Alpha because it relates to unmet Alpha Release Requirement #5: The installer must be able to use the DVD local package source options.

Comment 6 John Reiser 2010-07-15 17:51:32 UTC
Installing from DVD of today's rawhide works.

Comment 7 James Antill 2010-07-15 20:30:33 UTC
This isn't a "normal" API break, it will only trigger when rpm decides to fail the transaction (after the transaction test succeeded). So just testing an install doesn't mean it's fixed.

I've got a proposed patch, upstream, which I think fixes this ... and keeps the behaviour we want from yum cli. Testing with lack of disk space hasn't been done though.

Comment 8 Adam Williamson 2010-07-16 16:32:52 UTC
Discussed at blocker meeting of 2010/07/16. Given the information available we're accepting this as a blocker, but we do wonder - given comment #7 - if affected cases would still ultimately fail even if this bug were fixed? It sounds like the bug is only triggered if the package set to be installed is uninstallable in any case, which would mean the install could not ultimately proceed? Please advise.

Fedora Bugzappers volunteer triage team

Comment 9 John Reiser 2010-07-16 17:03:20 UTC
As noted in comment 6, installing Thursday's DVD of rawhide succeeded.  However comment 7 says there probably still is a bug (traceback from anaconda) if the disk becomes full (or other non-satisfactory situation detected by subprogram).  My interpretation of this is: No longer blocks F14Alpha.

Comment 10 Adam Williamson 2010-07-16 17:15:20 UTC
it's comment #7 I want a bit more detail on - exactly what conditions will trigger this bug, and whether it will ever be triggered in a case where the install would otherwise succeed.

Fedora Bugzappers volunteer triage team

Comment 11 James Antill 2010-07-16 19:14:20 UTC
 No, the fix won't make the install work when it doesn't.
 The fix is that instead of displaying a traceback anaconda will display a dialog saying something like:

  Can't install/update kernel due to /boot, 50Mb free 80Mb needed.

...which, to be fair, is much more helpful to the user (but they'll still need to fix something :).

Comment 12 John Poelstra 2010-07-21 04:02:37 UTC
Please help us save time at this week's Fedora 14 Alpha Blocker Bug review meeting by adding your comments on the assessment of this bug.  If this bug is still unresolved by Friday, July 23, 2010, we would appreciate your attendance at the Fedora 14 Alpha blocker meeting on freenode in the #fedora-bugzappers channel at 16:00 UTC.

The following information would be very helpful to have prior to Friday:
a) what additional information you need to troubleshoot or fix this bug
b) When you estimate having a fix ready

Thank you,

Comment 13 James Antill 2010-07-21 05:06:10 UTC
This should be fixed in the latest rawhide:


Note You need to log in before you can comment on or make changes to this bug.