<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><DIV>Hi James,</DIV>
<DIV>&nbsp;</DIV>
<DIV>Thanks for your quick reply.</DIV>
<DIV>&nbsp;</DIV>
<DIV>I just sent my Qs to RPM mailing list, hoping to hear from them.</DIV>
<DIV>&nbsp;</DIV>
<DIV>I took a look at RPM source code, and it seems like</DIV>
<DIV>if this macro ---&gt;&gt; _rollback_transaction_on_failure</DIV>
<DIV>is enabled, and if transaction type is set to RPMTRANS_TYPE_AUTOROLLBACK.</DIV>
<DIV>then, RPM's AUTO_ROLLBACK should do its job as advertised.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Here below is a code snippet from RPM source code::</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* See if we need to rollback on failure */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rollbackOnFailure = rpmExpandNumeric(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "%{?_rollback_transaction_on_failure}");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (rpmtsGetType(ts) &amp; (RPMTRANS_TYPE_ROLLBACK<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | RPMTRANS_TYPE_AUTOROLLBACK)) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rollbackOnFailure = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR></DIV>
<DIV>I will investigate, if it works as advertised.</DIV>
<DIV>&nbsp;</DIV>
<DIV>I have also been looking at YUM source code, and I dont think YUM sets AUTO_ROLLBACK transaction TYPE, when it creates RPM transaction in python.</DIV>
<DIV>&nbsp;</DIV>
<DIV>I have also looked at yum-complete-transaction utility, so have some idea, of how YUM dumps this transaction file, so that if RPM aborts in the middle of transaction, this file can be utilized to redo the transaction.</DIV>
<DIV>&nbsp;</DIV>
<DIV>If you or some other YUM developer has tried setting AUTO_ROLLBACK transaction type or experimented to see if it works as advertised for rolling back, you can let me know.</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>Thanks,</DIV>
<DIV>&nbsp;</DIV>
<DIV>Sudha</DIV>
<DIV><BR><BR>--- On <B>Fri, 4/3/09, James Antill <I>&lt;james-yum@and.org&gt;</I></B> wrote:<BR></DIV>
<BLOCKQUOTE style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: rgb(16,16,255) 2px solid">From: James Antill &lt;james-yum@and.org&gt;<BR>Subject: Re: [Yum] RPM Rollbacks<BR>To: "Yellowdog Updater, Modified" &lt;yum@lists.baseurl.org&gt;<BR>Cc: innovative_c@yahoo.com<BR>Date: Friday, April 3, 2009, 8:07 PM<BR><BR><PRE> I've removed the devel mailing list from the Cc..

Creative Innovative &lt;innovative_c@yahoo.com&gt; writes:

&gt; Hi All.
&gt; &nbsp;
&gt; Seth Vidal in this older mail&nbsp; chain below, has mentioned that 
&gt; RPM no longer supports rollback.
&gt;
&gt; Is this really TRUE, I would like to know the reason why its NOT
supported.

 You might want to ask the RPM maintainers, instead of the yum ones
then? Although I think you'll find that noone has ever
"supported" it,
because it never worked reliably enough for anyone to do so. Removing
it was just removing the false advertising.

&gt; I think, RPM currently supports
&gt; --AUTOMATIC ROLLBACK OF A TRANSACTION.
&gt; ie, what I mean is, if you have multiple package installs/erases within 1
single RPM transaction, then if there is a failure,
&gt; for any package install/erase, then prior to failure, whatever other
packages that were installed/erased, will be undone. Can someone please confirm
this.

 You can "kill -9" rpm (or remove power etc.), it could not possibly
do anything after this so it could not possibly undo anything after
this type of failure.
 However even in the case of a "recoverable" transaction failure
.... rpm just aborts as is. This is why yum-complete-transaction
exists.
 Note current stable version (will become 3.2.23) has the "downgrade"
command, and the current stable yum-utils has yum-debug-restore which
uses it. However this is _not_ the same thing (and doesn't give the
same promises) as a database rollback.

-- 
James Antill -- james@and.org
</PRE></BLOCKQUOTE></td></tr></table><br>