Bug 821633 - [abrt] yum-3.4.3-23.fc17: yumRepo.py:1360:_commonRetrieveDataMD:OSError: [Errno 2] No such file or directory
[abrt] yum-3.4.3-23.fc17: yumRepo.py:1360:_commonRetrieveDataMD:OSError: [Err...
Product: Fedora
Classification: Fedora
Component: yum (Show other bugs)
x86_64 Unspecified
unspecified Severity unspecified
: ---
: ---
Assigned To: Fedora Packaging Toolset Team
Fedora Extras Quality Assurance
Depends On:
  Show dependency treegraph
Reported: 2012-05-15 03:49 EDT by Michal Nowak
Modified: 2014-01-21 18:21 EST (History)
6 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2012-05-15 08:28:52 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Michal Nowak 2012-05-15 03:49:27 EDT
libreport version: 2.0.10
abrt_version:   2.0.10
cmdline:        /usr/bin/python /usr/bin/yum distro-sync
comment:        No idea, just found it in ABRT. However I was doing distro sync recently.
executable:     /usr/bin/yum
kernel:         3.3.4-1.fc17.x86_64
time:           Wed 09 May 2012 11:44:37 AM CEST
uid:            0
username:       root

:yumRepo.py:1360:_commonRetrieveDataMD:OSError: [Errno 2] No such file or directory
:Traceback (most recent call last):
:  File "/usr/bin/yum", line 29, in <module>
:    yummain.user_main(sys.argv[1:], exit_code=True)
:  File "/usr/share/yum-cli/yummain.py", line 321, in user_main
:    errcode = main(args)
:  File "/usr/share/yum-cli/yummain.py", line 146, in main
:    result, resultmsgs = base.doCommands()
:  File "/usr/share/yum-cli/cli.py", line 485, in doCommands
:    return self.yum_cli_commands[self.basecmd].doCommand(self, self.basecmd, self.extcmds)
:  File "/usr/share/yum-cli/yumcommands.py", line 466, in doCommand
:    return base.distroSyncPkgs(extcmds)
:  File "/usr/share/yum-cli/cli.py", line 937, in distroSyncPkgs
:    obsoletes = self.up.getObsoletesTuples(newest=1)
:  File "/usr/lib/python2.7/site-packages/yum/__init__.py", line 1022, in <lambda>
:    up = property(fget=lambda self: self._getUpdates(),
:  File "/usr/lib/python2.7/site-packages/yum/__init__.py", line 827, in _getUpdates
:    self._up = rpmUtils.updates.Updates(self.rpmdb.simplePkgList(), self.pkgSack.simplePkgList())
:  File "/usr/lib/python2.7/site-packages/yum/__init__.py", line 1003, in <lambda>
:    pkgSack = property(fget=lambda self: self._getSacks(),
:  File "/usr/lib/python2.7/site-packages/yum/__init__.py", line 767, in _getSacks
:    self.repos.populateSack(which=repos)
:  File "/usr/lib/python2.7/site-packages/yum/repos.py", line 265, in populateSack
:    self.doSetup()
:  File "/usr/lib/python2.7/site-packages/yum/repos.py", line 92, in doSetup
:    self.ayum.plugins.run('postreposetup')
:  File "/usr/lib/python2.7/site-packages/yum/plugins.py", line 187, in run
:    func(conduitcls(self, self.base, conf, **kwargs))
:  File "/usr/lib/yum-plugins/langpacks.py", line 72, in postreposetup_hook
:    infile = repo.getGroups()
:  File "/usr/lib/python2.7/site-packages/yum/yumRepo.py", line 1653, in getGroups
:    if 'group_gz' in self.repoXML.fileTypes():
:  File "/usr/lib/python2.7/site-packages/yum/yumRepo.py", line 1466, in <lambda>
:    repoXML = property(fget=lambda self: self._getRepoXML(),
:  File "/usr/lib/python2.7/site-packages/yum/yumRepo.py", line 1462, in _getRepoXML
:    self._loadRepoXML(text=self)
:  File "/usr/lib/python2.7/site-packages/yum/yumRepo.py", line 1453, in _loadRepoXML
:    return self._groupLoadRepoXML(text, self._mdpolicy2mdtypes())
:  File "/usr/lib/python2.7/site-packages/yum/yumRepo.py", line 1429, in _groupLoadRepoXML
:    self._commonRetrieveDataMD(mdtypes)
:  File "/usr/lib/python2.7/site-packages/yum/yumRepo.py", line 1360, in _commonRetrieveDataMD
:    os.rename(local, local + '.old.tmp')
:OSError: [Errno 2] No such file or directory
:Local variables in innermost frame:
:old_repo_XML: <yum.repoMDObject.RepoMD instance at 0x34b4e18>
:odata: <yum.repoMDObject.RepoData instance at 0x3462e18>
:omdtype: 'group_gz'
:downloading_with_size: []
:mdtype: 'group'
:all_mdtypes: ['group', 'filelists', 'updateinfo', 'prestodelta', 'primary', 'other']
:self: <yum.yumRepo.YumRepository object at 0x2a7e350>
:downloading_no_size: []
:mdtypes: ['primary']
:_mdtype_eq: <function _mdtype_eq at 0x3467500>
:ndata: <yum.repoMDObject.RepoData instance at 0x3483638>
:local: '/var/cache/yum/x86_64/17/fedora/624732d200710e875f8ea04ac25cc25ca96df16b94367638509c96cfc755e5b8-comps-rawhide.xml.gz'
:reverts: []
:nmdtype: 'group_gz'
Comment 1 Zdeněk Pavlas 2012-05-15 06:14:50 EDT
Hi, thanks for the report!  It's really interesting, one of these weird "canthappen" things..  Could you tell the Yum version you were using? (rpm -q yum).

We've likely downloaded "group", but try to move "group_gz" instead.  I think a Yum update with this http://yum.baseurl.org/gitweb?p=yum.git;a=commitdiff;h=125284d5dd0 got applied in between.. That's fine, but, but, but:

local = self._groupCheckDataMDValid(odata, omdtype,mdtype,True)
if local:
  os.rename(local, local + '.old.tmp')

Since _groupCheckDataMDValid() does a checksum of local, there seems to be no code path it could possibly return a non-existing file.
Comment 2 Michal Nowak 2012-05-15 06:53:08 EDT
As the title says it's yum-3.4.3-23.fc17 (actually verified on the system).

Looking into /var/log/messages I did distro sync and 1 minute after last "Installed XXX.rpm" line in the log ABRT reported crash to syslog. 4 minutes after that, system was shut down.
Comment 3 Zdeněk Pavlas 2012-05-15 08:28:52 EDT
Thanks.. There's an evidence that '/var/cache/yum/x86_64/17/fedora/624732d200710e875f8ea04ac25cc25ca96df16b94367638509c96cfc755e5b8-comps-rawhide.xml.gz' existed (1) and matched the checksum (2) just shortly before Yum tried to rename it, so I believe it was some kind of a race.  Please reopen if you manage to reproduce this.

(1) had the 'xml.gz' file not existed, local would be set to the decompressed filename in yumRepo.py:1294.  But it wasn't.

(2) _checkMD(local) at yumRepo.py:1301 clearly succeeded.

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