TM and commit/abort regarding RDBMS
Hi all. Thanks to suggestions provided by Dieter on this mailing list, we've been successfull in creating transaction-aware objects, which correctly register. My next question is where I could find more information about the protocol used by Zope/ZODB with TM-aware classes. I think it is a two phase commit, but, in this case, I've some doubt. The two phase commit, IIRC, works as follows: phase 1) all the involved parties in a transaction are asked if the transaction should commit or abort phase 2) if all the parties agrees on commit, then commit (i.e. call the commit for) all objects, otherwise abort. Now, if I understand correctly, phase 1) is done in the tpc_vote. According to the implementation of some DA (ZMysqlDA, ZPsycopgDA), the tpc_vote is actually not defined, therefore it will always vote for finalizing. At this point, all transactions will try to commit... including the open database transaction. The question are two: 1) where can I learn more about this process inside Zope? 2) is there a scenario where a commit from Zope will face an abort from the RDB (i.e. Zope will call the commit, and the RDB will refuse due to concurrency problems) ? Thanks to all for patience and support. Regards Marco
Marco Bizzarri wrote at 2005-1-12 11:04 +0100:
... My next question is where I could find more information about the protocol used by Zope/ZODB with TM-aware classes. I think it is a two phase commit, but, in this case, I've some doubt.
Transactions are part of the ZODB and are documented in the ZODB3 documentation (you can find an HTML and a PDF version on "zope.org"). -- Dieter
participants (2)
-
Dieter Maurer -
Marco Bizzarri