Re: SUG: Automatic RPM database verification and repair

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



At 11:49 PM -0500 12/2/06, Jeff Johnson wrote:
>On Dec 2, 2006, at 11:12 PM, Tony Nelson wrote:
>
>>
>> Rpmlib opened up a can of worms when it stole the signals in the first
>> place.  Sure, it needs something like that in order to be robust in
>> the face of stupidity or carelessness, but re-canning still takes a
>> bigger can.
>
>Guy, you don't have a clue ...
>
>rpm-3.0.x had *CATASTROPHIC* database failures.
>
>Yes, whole machine, reinstall, scrub to bare disk.
>
>Which is why the switch was made to Berkeley DB.
>
>And a concurrent access model was chosen so the widdle python script
>kiddies would not have to learn anything whatsoever about database
>programming.
>
>And you want to tell me that rpmlib "opened a can of worms"
>because some idiot python programmers have decided to
>reopen a Berkeley DB for every header instance in order
>to handle ^C??????

No, I did not say that.  I said that a library that takes signal handling
away from its client application has opened a can of worms, and that RPM
needed to do something like that in order to be safe.  I did not say
anything about Berkely DB, or about earlier versions of RPM.  I most
certainly did not say, nor do I believe, that the particular method used by
yum to regain the use of Ctl-C was correct or workable.

I have been promoting a different way to regain the use of Ctl-C.
According to my reading of yum, my way is safe for the RPM database, as all
the exit paths from yum are equivalent, so if any are safe all are safe.
My reason for taking back the SIGINT signal is that RPM gets them even when
not in a call to RPM, so they can be delayed for /minutes/ and then pop up
after yum's package downloading completes.  My understanding is that RPM
doesn't need any special action taken on SIGINT; it just needs its database
to be closed properly no matter how the application exits, and yum seems to
be doing that. I may be wrong about any of this, but I am not a proponent
of what yum is currently doing.

In any event, the "bigger can" involves something along the lines of
letting the client application know in a timely fashion about the signals
whether RPM has captured them or not.  James' first suggestion looks good
to me, but insufficient.  I think a function to get the current
signal-received flags would also be needed.  I don't know how much work
Jame's callback would be, and I defer to your judgement.  Maybe a function
to get the flags would be enough, if there is a reasonable place to use it
from yum; I will look into that and make a formal RFE for it if I can come
up with a simple patch to yum that would do the job.


>This code was *STABLE* even if not perfect until a dweeb made a
>change to yum on September 3, 2006.
>
>I haven't even begun to rip up yum yet. Taking a header instance
>and saving it in a dictionary *RELEASING ALL LOCKS* is psychotic.

I do not recall defending doing that.  Please show me where I have done
that so I can apologise for it.

I am not the author of yum, I have not written any of the code in yum, and
I don't claim to have done so.  Writing a yum plugin does not change yum,
and my plugin /does not ship/ with yum.  I make it available only at my web
site (see sig for URL).

Umm, in order to help me when I try to read yum to understand what it is
doing, are you saying that yum is copying some data from RPM and then
assuming that it will not change across unlocking / relocking the database?
That is, it uses possibly stale data, but not invalid iterators?  And
please pardon my ignorance of BerkelyDB; I will work to learn about it.


>And delivering FC6 (and soon RHEL5) with this degree of instability,
>refusing to upgrade rpm, blabbering on about forking rpm, and accusing
>me of sabotaging the source code, when I am not part of FC, nor
>@redhat.com, is  plain and simply not my problem.

I do not maintain RPM or its Fedora package.  I am not part of Fedora
Project, nor have I said that I was.

I posted on this list to ask for assistance with my RPM database-verifying
package.  I received that assistance from you and others, but I also
received a lot of unwarranted and incorrectly aimed abuse.

I do not recall "[accusing you] of sabotaging the source code".  Please
show me where I did that so I can apologise for it.


>Whatever I'm doing, you and FC users are highly unlikely to gain any
>benefit whatsoever.

That seems strange.  In any event, you have been somewhat helpful to me and
you are clearly doing work to make RPM more robust in the face of both
happenstance and stupidity, and I thank you.
-- 
____________________________________________________________________
TonyN.:'    The Great Writ     <mailto:tonynelson@xxxxxxxxxxxxxxxxx>
      '      is no more.             <http://www.georgeanelson.com/>

_______________________________________________
Rpm-list mailing list
Rpm-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/rpm-list

[Index of Archives]     [RPM Ecosystem]     [Linux Kernel]     [Red Hat Install]     [PAM]     [Red Hat Watch]     [Red Hat Development]     [Red Hat]     [Gimp]     [Yosemite News]     [IETF Discussion]

  Powered by Linux