Comment 12 for bug 44032

Revision history for this message
Steve Alexander (stevea) wrote : Re: Possible use of more than one connection ID on a single thread may be the cause of many OOPSes

I think the rollback is caused by the form processing machinery. GeneralForm, and the various EditForm and FormView variants all do an abort() if there is a WidgetError.

This is dangerous. I think we implicitly start a new transaction after an abort(). What we should be doing is "dooming" the transaction, so that by the time we get to the end of publication, the publication knows it must not commit the transaction, but instead will always abort it, regardless.

Sometime ago, I proposed a doom() method for the transaction manager API in Zope. We can do an equivalent thing either by extending the TM api or hooking into the publisher.