Dennis Allison wrote:
Ah so desu. That's the conceptual hook I was missing. Only one
transaction per request and no subtransactions!
ZODB substransactions won't help you here in the slightest...
A transaction is
processing initiated by a client request or a redirect. (Anything else?)
A transaction has its own REQUEST and RESPONSE objects.
Wrong way round. Each REQUEST has one RESPONSE associated with it, and
the publisher does either a transaction commit, if no errors occur, or a
transaction abort, if errors occur, once it has processed a REQUEST.
Read conflict errors can be raised at any time, but shouldn't really
occur once you have MVCC working. Write conflict errors only happen
during transaction commit. The publisher retries the whole request if a
conflict errors of either sort occurs. If the retry fails 3 times, it
gives up, aborts the transaction and reports the conflict error to the
end user by way of writing to the response object.
Simplistix - Content Management, Zope & Python Consulting
Zope maillist - Zope@zope.org
** No cross posts or HTML encoding! **
(Related lists -