Bug 696720

Summary: "yum reinstall" generates the wrong rpmdb versions, due to not dropping old cached rpmdb entries
Product: Red Hat Enterprise Linux 6 Reporter: James Antill <james.antill>
Component: yumAssignee: James Antill <james.antill>
Status: CLOSED ERRATA QA Contact: Red Hat Satellite QA List <satqe-list>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.1CC: borgan, ksrot, syeghiay, tcapek
Target Milestone: rcKeywords: Regression
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
When a package was reinstalled, yum generated RPM database entries that included both the old and new versions of the package, leading to various issues. This bug has been fixed and now only correct RPM database entries are generated for reinstalled packages.
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-05-19 13:34:24 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description James Antill 2011-04-14 17:54:40 UTC
"yum reinstall bash" will generate an rpmdb version that includes both the old and new bash entries.

  You can easily see this via:

yum version nogroups
yum reinstall bash -y
yum history info
yum version nogroups

...both of the later two things will say that you have a different "rpmdb version".

 This screws up a bunch of stuff, and is a regression from 6.0 ... so we need to fix it before 6.1.
 Patch is trivial:


commit a88eb710dac54118034507c131e31eced54234d2
Author: James Antill <james>
Date:   Thu Apr 14 13:48:27 2011 -0400

    Fix dropCachedDataPostTransaction() for reinstall packages.

diff --git a/yum/rpmsack.py b/yum/rpmsack.py
index 5c18c7c..cd79ecc 100644
--- a/yum/rpmsack.py
+++ b/yum/rpmsack.py
@@ -343,6 +343,11 @@ class RPMDBPackageSack(PackageSackBase):
             if txmbr.output_state in constants.TS_INSTALL_STATES:
                 self._pkgname_fails.discard(txmbr.name)
                 precache.append(txmbr)
+                if txmbr.reinstall:
+                    ipo = self._tup2pkg[txmbr.pkgtup]
+                    _safe_del(self._idx2pkg, ipo.idx)
+                    _safe_del(self._tup2pkg, txmbr.pkgtup)
+
             if txmbr.output_state in constants.TS_REMOVE_STATES:
                 _safe_del(self._idx2pkg, txmbr.po.idx)
                 _safe_del(self._tup2pkg, txmbr.pkgtup)

Comment 5 Tomas Capek 2011-05-17 11:56:49 UTC
    Technical note added. If any revisions are required, please edit the "Technical Notes" field
    accordingly. All revisions will be proofread by the Engineering Content Services team.
    
    New Contents:
When a package was reinstalled, yum generated RPM database entries that included both the old and new versions of the package, leading to various issues. This bug has been      fixed and now only correct RPM database entries are generated for reinstalled packages.

Comment 6 errata-xmlrpc 2011-05-19 13:34:24 UTC
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on therefore solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.

http://rhn.redhat.com/errata/RHBA-2011-0602.html