[Zope] Rollback and delete weird behavior

Luiz Fernando B. Ribeiro luiz at engenhosolucoes.com.br
Sat Jul 1 13:24:44 EDT 2006


Hello,

In a python script I got a structure like this:

# Many request checks

# A zSQl method deleting some old data
cotainer.doDelete(key=key)

errors = [ ]
for data in list:
   # Other checks
   if error:
     errors.append(error)
     continue

   # Inserts in mysql database
   cotainer.doInsert(data=data, other=stuff)

if errors:
   raise "An Error with list of error: %s" % ', '.join(errors)

# --- cut ---

The problem is that the raise is not rolling back the delete, looking in 
mysql log the following sequence was found:

--Begin transaction
[delete statement]
[the insert statements]
--Rollback
--Begin transaction        !!
[delete statement again]   !!
--Commit                   !!!

We tried it many times and revised our code. The only solution was to 
put the delete statement in weird block like this:

if True:
   cotainer.doDelete(key=key)

As if the rollback was only effective against a "2nd level" instruction. 
This is a really odd behavior but with this trick the rollback was done 
correctly.

Has anyone ever seen this?

Luiz Fernando B. Ribeiro


More information about the Zope mailing list