[Zope-dev] Re: zpatterns-0.4.0a5: problem with unregistering transactionals

Phillip J. Eby pje@telecommunity.com
Thu, 27 Jul 2000 09:59:40 -0500


Question...  Are you on 2.1.x or 2.2?  Also, in your example, tpc_entered
is not set because tpc_entered is only true if the transaction commit
process (tpc = two-phase commit) has been started.

At 11:53 AM 7/27/00 +0400, Jephte CLAIN wrote:
>
>Ok, so ZPatterns.Transactional._unregistered method is called twice for
>a ZPatterns.Transactional object when an exception is raised and the
>ZPatterns.Transactional object has not be freed: once from the
>ZODB.Transaction.abort method, once from the ZODB.Transaction.__del__
>method which call abort if objects to be aborted remain in the zodb
>transaction aware object
>The call is made twice for DataSkins and for TransientMapping (as far as
>I know, they are at the moment the only Transactional objects in
>zpatterns)
>
>for example, try this DTML code in a specialist:
>
><dtml-with "getItem(key='whatever key you have in the specialist')">
><dtml-raise>
></dtml-raise>
></dtml-with>
>
>without my patch, Zope should display 'uncatched exceptions in
>Transation object'
>
>so what now? I'm lost. Is this normal or not? Is my patch sufficient
>(ignore attempts to abort the object twice by trapping exceptions in
>_unregister). What about Transactional.abort which check for
>tpc_entered? Why is tpc_entered never set to 0?
>