[Zope] How to commit a piece of data in a transaction when the transaction is being aborted later

Tino Wildenhain tino at wildenhain.de
Wed Jun 21 04:37:21 EDT 2006


William Heymann schrieb:
> On Wednesday 21 June 2006 01:17, Tino Wildenhain wrote:
> 
>>William Heymann schrieb:
> 
> 
>>>That is probably a good idea for long term to change things that way and
>>>I would like to rewrite it. However right now I don't really want to
>>>rewrite the way the current system works. I had hoped I could just use
>>>get_transaction().commit() almost immediately after seeing the data from
>>>Verisign.
>>
>>The problem is, there is no garanty about success of that transaction
>>either. So if it rolls back, what do you do with verysign?
>>Maybe a fifo logfile could solve your problem.
> 
> 
> Actually that is not a problem. If just trying to write the data causes a 
> failure then verisign won't ok the transaction which is the point. However 
> what I want to happen is for the system to try and make sure as much as 
> possible that the data that verisign sends gets written and committed before 
> it tries to do other stuff. If that simple step should fail then there is a 
> very seroius problem occurring and the system should not be okaying any 
> orders. 

I dont understand what you mean here. Usually the zope transaction spans
the whole process (request) so if you have some tasks after your verisign
remote request, they will all be covered in the transaction - so if any
of them fail, verisign will get that failure message too and no false
orders will be taken.

> The thing with Verisign is called a silent post confirmation. Before verisign 
> will okay a customer transaction it sends a post to my server with various 
> details and my code will look over that and decide if it is all ok. A 
> response code of 200 means ok, anything else means failure. Thus any uncaught 
> error in zope will cause the transaction to fail which is the point. 

Which transaction? The Verisign control post? That failing would be correct
because something indeed went wrong!

> I just want to try and record the data that verisign sent and commit it before 
> I try the rest so that what if something later should cause it to fail I 
> still have a record of the commands send. Right now I am essentially writing 
> the data to an OOBTree object.

Well, but your essential steps indeed failed so why would you commit?
How do you recover half done transactions?

Regards
Tino Wildenhain


More information about the Zope mailing list