Can you provide a reproducible test case? There are really too many moving parts here to know what is going on without being able to reproduce it.

On Jul 1, 2006, at 1:24 PM, Luiz Fernando B. Ribeiro wrote:

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
_______________________________________________
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope-dev )


_______________________________________________
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope-dev )

Reply via email to