[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