Bug 1302198

Summary: remote package upgrade saying newer package is installed, but it is not
Product: [Community] Spacewalk Reporter: Jan Hutař <jhutar>
Component: ClientsAssignee: Jiří Dostál <jdostal>
Status: CLOSED DUPLICATE QA Contact: Red Hat Satellite QA List <satqe-list>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 2.4CC: jdostal, tony
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-02-19 11:36:44 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1484117    

Description Jan Hutař 2016-01-27 06:36:48 UTC
Description of problem:
I have "openssl-0.9.8e-36.0.1.el5_11" installed and when I attempt to remotely upgrade to "openssl-0.9.8e-37.el5_11", rhn_check fails with "More recent version of package openssl-0:0.9.8e-37.el5_11.i686 is already installed".


Version-Release number of selected component (if applicable):
rpm-python-4.4.2.3-36.el5_11
rhnlib-2.5.77-1.el5
yum-rhn-plugin-2.4.6-1.el5
yum-3.2.22-40.el5.centos
rhn-client-tools-2.4.11-1.el5


How reproducible:
always


Steps to Reproduce:
1. Have system with "openssl-0.9.8e-36.0.1.el5_11" installed
2. Attempt to remotely upgrade to "openssl-0.9.8e-37.el5_11"


Actual results:
[root@detr-fire-02-pv ~]# rhn_check -vv
D: check_action{'action': "<?xml version='1.0'?>\n<methodCall>\n<methodName>packages.update</methodName>\n<params>\n<param>\n<value><array><data>\n<value><array><data>\n<value><string>openssl</string></value>\n<value><string>0.9.8e</string></value>\n<value><string>37.el5_11</string></value>\n<value><string></string></value>\n<value><string>i686</string></value>\n</data></array></value>\n</data></array></value>\n</param>\n</params>\n</methodCall>\n", 'version': 2, 'id': 307247}
updateLoginInfo() login info
D: login(forceUpdate=True) invoked
logging into up2date server
D: rpcServer: Calling XMLRPC up2date.login
D: writeCachedLogin() invoked
D: Wrote pickled loginInfo at 1453828073.63 with expiration of 1453831673.63 seconds.
successfully retrieved authentication token from up2date server
D: logininfo:{'X-RHN-Server-Id': 1000010853, 'X-RHN-Auth-Server-Time': '1453828073.61', 'X-RHN-Auth': '/(********)', 'X-RHN-Auth-Channels': [['MonthlyBaseline-centos5-i386', '20141215160147', '1', '1'], ['MonthlyBaseline-centos5-i386-fasttrack', '20140313113850', '0', '1'], ['MonthlyBaseline-centos5-i386-opsview-client', '20140815170747', '0', '1'], ['MonthlyBaseline-centos5-i386-updates', '20160116134506', '0', '1'], ['MonthlyBaseline-centos5-i386-vmwaretools', '20140313114013', '0', '1'], ['MonthlyBaseline-epel5-centos5-i386', '20160116134548', '0', '1'], ['MonthlyBaseline-spacewalk21-client-centos5-i386', '20151016144043', '0', '1']], 'X-RHN-Auth-User-Id': '', 'X-RHN-Auth-Expire-Offset': '3600.0'}
D: handle_action{'action': "<?xml version='1.0'?>\n<methodCall>\n<methodName>packages.update</methodName>\n<params>\n<param>\n<value><array><data>\n<value><array><data>\n<value><string>openssl</string></value>\n<value><string>0.9.8e</string></value>\n<value><string>37.el5_11</string></value>\n<value><string></string></value>\n<value><string>i686</string></value>\n</data></array></value>\n</data></array></value>\n</param>\n</params>\n</methodCall>\n", 'version': 2, 'id': 307247}
D: handle_action actionid = 307247, version = 2
D: do_call packages.update([['openssl', '0.9.8e', '37.el5_11', '', 'i686']],){'cache_only': None}
Loaded plugins: fastestmirror, kmod, rhnplugin
D: rpcServer: Calling XMLRPC up2date.listChannels
This system is receiving updates from RHN Classic or Red Hat Satellite.
Loading mirror speeds from cached hostfile
Loading mirror speeds from cached hostfile
D: Called update[['openssl', '0.9.8e', '37.el5_11', '', 'i686']]
D: More recent version of package openssl-0:0.9.8e-37.el5_11.i686 is already installed
D: Sending back response(0, 'Requested packages already installed', {})
D: do_call packages.checkNeedUpdate('rhnsd=1',){}
D: local action status: (0, 'rpm database not modified since last update (or package list recently updated)', {})
D: rpcServer: Calling XMLRPC registration.welcome_message
[root@detr-fire-02-pv ~]# rpm -q openssl
openssl-0.9.8e-36.0.1.el5_11


Expected results:
Should e installed


Additional info:
This was found by "Coffman, Anthony J" <Tony.Coffman> on Spacewalk list. Thank you!

Comment 1 Jan Hutař 2016-01-27 06:41:25 UTC
With this debugging code added, this is the output:

--- usr/share/rhn/actions/packages.py.ORIG	2016-01-26 22:01:10.002192351 +0100
+++ usr/share/rhn/actions/packages.py	2016-01-26 22:04:56.623616475 +0100
@@ -344,6 +344,10 @@
 
         found = False
         for pkg in pkgs:
+            current = pkg.returnEVR()
+            print "Current:", current.epoch, current.version, current.release
+            print "Candidate:", evr.epoch, evr.version, evr.release
+            print "Comparasion:", current.compare(evr)
             if pkg.returnEVR().compare(evr) == 0:
                 log.log_debug('Package %s already installed' \
                     % _yum_package_tup(package))

this was shown by rhn_check:

[...]
D: Called update[['openssl', '0.9.8e', '37.el5_11', '', 'i686']]
Current: 0 0.9.8e 36.0.1.el5_11
Candidate: None 0.9.8e 37.el5_11
Comparasion: 1
D: More recent version of package openssl-0:0.9.8e-37.el5_11.i686 is already installed
[...]

Comment 2 Jan Hutař 2016-01-27 06:43:13 UTC
And this is a python console session possibly touching the issue:

# python
Python 2.4.3 (#1, Jan  9 2013, 06:49:54)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import yum.packages
>>> current = yum.packages.PackageEVR(None, '0.9.8e', '36.0.1.el5_11')
>>> new = yum.packages.PackageEVR(None, '0.9.8e', '37.el5_11')
>>> current.compare(new)
-1
>>> new = yum.packages.PackageEVR('', '0.9.8e', '37.el5_11')
>>> current.compare(new)
1
>>>

(sorry for attempt with epoch 0 missing)

Comment 3 Jan Hutař 2016-01-27 08:08:51 UTC
Also on mine reproducer I do not see updates showing on webUI for that system. With both OLD and NEW openssl versions installed I'm getting:

# rpm -q openssl --qf "%{EPOCH}\n"
(none)

Comment 4 Tony Coffman 2016-02-17 17:25:37 UTC
I think this may be a duplicate with bug 1292288

Comment 5 Jiří Dostál 2016-02-19 11:36:44 UTC
Marking this one as duplicate of 1292288. Please check 1292288 for update.

*** This bug has been marked as a duplicate of bug 1292288 ***

Comment 6 Eric Herget 2017-09-28 18:11:19 UTC
This BZ closed some time during 2.5, 2.6 or 2.7.  Adding to 2.7 tracking bug.