[Yum] clean all traceback
Troy Dawson
dawson at fnal.gov
Wed Jan 15 22:40:33 UTC 2003
Three cheers for Seth !!!
Yes!!
Hip Hip Horray
and
Alright!!!
Yes, that fixed it. Thank you.
Troy
seth vidal wrote:
> On Wed, 2003-01-15 at 16:00, Troy Dawson wrote:
>
>>Howdy Ho,
>>Here at fermilab we have this odd little problem that only happens twice then
>>goes away. It happens in our nightly cron job, as it cleans itself up.
>>
>>So, here is the senario.
>>A user does a fresh install, or for some other reason, put's yum on for the
>>first time, and get's their headers seeded. To do that we basically have all
>>the headers from the repository, and the header.info file, in a tar ball, we
>>then put them in the appropriate spot. But this means that they now have all
>>the headers, so running a yum clean is going to remove a bunch of them.
>>So along comes the nightly yum, and we have it clean itself up as it goes
>>along. But as it is cleaning up, we get the traceback below.
>>We've actually been having this happen for a long time, but, it only happens
>>on the first, and occasionally the second, time that this cleanup happens. So
>>the user get's the e-mail one night, and they are worried, so they check to
>>see if yum is still working, which it is, then they forget about it.
>>
>>--snip---from running it with a -d4 instead of -d2---snip--
>>
>>Deleting Header /var/cache/yum/731updates/headers/kernel-0-2.4.18-10.i386.hdr
>>Deleting Header /var/cache/yum/731updates/headers/kernel-0-2.4.18-10.i586.hdr
>>Deleting Header /var/cache/yum/731updates/headers/kernel-0-2.4.18-10.i686.hdr
>>Deleting Header /var/cache/yum/731updates/headers/kernel-0-2.4.18-10.i686.hdr
>>Traceback (innermost last):
>> File "/usr/sbin/yum", line 24, in ?
>> yummain.main(sys.argv[1:])
>> File "yummain.py", line 181, in main
>> File "clientStuff.py", line 687, in take_action
>> File "clientStuff.py", line 530, in clean_up_old_headers
>>OSError: [Errno 2] No such file or directory:
>>'/var/cache/yum/731updates/headers/kernel-0-2.4.18-10.i686.hdr'
>>
>>--end-snip---end-snip---end-snip--
>>
>>I wasn't too worried about it until the farm people said they were going to be
>>upgrading 500 nodes next month to be using yum. Also the users are starting
>>to go to our release that uses it, and the observant users are noticing and
>>asking about it more and more.
>>
>>I do have the full output of doing the command with a -d 4 and a -d 10, as
>>well as the config file and full command that causes the traceback. I figured
>>I'd spare the list and only send it to those that want it.
>>
>
>
> oo look - I found it :-D
>
> clientStuff.py - starting at line 516 it says:
>
> for hdrfn in hdrlist:
> hdr = readHeader(hdrfn)
> (e, n, v, r, a) = getENVRA(hdr)
> if rpmDBInfo.exists(n, a):
> (e1, v1, r1) = rpmDBInfo.evr(n, a)
> rc = compareEVR((e1, v1, r1), (e, v, r))
> # if the rpmdb has an equal or better rpm then delete
> # the header
> if (rc >= 0):
> log(4, 'Deleting Header %s' % hdrfn)
> os.unlink(hdrfn)
> if not HeaderInfo.exists(n, a):
> # if its not in the HeaderInfo nevral anymore just kill it
> log(4, 'Deleting Header %s' % hdrfn)
> os.unlink(hdrfn)
>
> well if the hdr isn't needed b/c there is a good enough one in the rpmdb
> AND it's no longer in the header.info anywhere well, then it's being
> deleted twice.
>
> apply this patch see if you see it anymore. If it works then It'll go
> in.
> thanks
> -sv
>
>
>
>
> ------------------------------------------------------------------------
>
> --- clientStuff.py 9 Dec 2002 05:37:31 -0000 1.47
> +++ clientStuff.py 15 Jan 2003 21:50:20 -0000
> @@ -514,6 +514,7 @@
> hdrdir = conf.serverhdrdir[serverid]
> hdrlist = getfilelist(hdrdir, '.hdr', hdrlist)
> for hdrfn in hdrlist:
> + todel = 0
> hdr = readHeader(hdrfn)
> (e, n, v, r, a) = getENVRA(hdr)
> if rpmDBInfo.exists(n, a):
> @@ -522,13 +523,14 @@
> # if the rpmdb has an equal or better rpm then delete
> # the header
> if (rc >= 0):
> - log(4, 'Deleting Header %s' % hdrfn)
> - os.unlink(hdrfn)
> + todel = todel + 1
> + log(6, 'Header %s should be deleted' % hdrfn)
> if not HeaderInfo.exists(n, a):
> # if its not in the HeaderInfo nevral anymore just kill it
> - log(4, 'Deleting Header %s' % hdrfn)
> + todel = todel + 1
> + log(6, 'Deleting Header %s' % hdrfn)
> + if todel > 0:
> os.unlink(hdrfn)
> -
>
> def printtime():
> import time
--
__________________________________________________
Troy Dawson dawson at fnal.gov (630)840-6468
Fermilab ComputingDivision/OSS CSI Group
__________________________________________________
More information about the Yum
mailing list