[Zope-dev] [ZODB-Dev] attempting to undo an un-undoable transaction gives "NotImplementedError" with ZODB 3.9.5

Jim Fulton jim at zope.com
Fri Sep 10 08:05:34 EDT 2010


On Fri, Sep 10, 2010 at 2:27 AM, Chris Withers <chris at simplistix.co.uk> wrote:
> On 09/09/2010 21:47, Jim Fulton wrote:
>>>
>>> 2010-08-26 22:49:01 ERROR txn.-1338986496 Failed to abort resource
>>> manager:<MultiObjectResourceAdapter for<ZODB.DB.TransactionalUndo
>>> object at 0x2d509f0>  at 47516176>
>>> Traceback (most recent call last):
>>>   File "transaction-1.1.0-py2.6.egg/transaction/_transaction.py", line
>>> 475, in abort
>>>     rm.abort(self)
>>>   File "transaction-1.1.0-py2.6.egg/transaction/_transaction.py", line
>>> 548, in abort
>>>     self.manager.abort(o, txn)
>>>   File "ZODB3-3.9.5-py2.6-macosx-10.3-fat.egg/ZODB/DB.py", line 985, in
>>> abort
>>>     raise NotImplementedError
>>> NotImplementedError
>>>
>>> This used to give a meaningful error message.
>>
>> In 3.7 and earlier.
>>
>>>
>>> Anyone know why it no longer does?
>>
>> The resource manager abort method used to be a pass. In 3.9 in raises
>> an exception, which hides the undo exception.
>
> That's bad, right?

It's affect on zope users is, but arguably because Zope 2 is(/was?)
misshandling the exception.  It shouldn't let an exception raised while
handling the original exception hide the original exception. (Of course,
this is a common mistake. I've made it many times myself. :)

>> An app should capture
>> the undo exception information before calling abort.
>
> "the app" here is Zope 2's publisher process, right?

I guess. :)

>
>> My guess is that this works much better in ZODB 3.10.
>
> Any particular reason?

Because the undo handling was rewritten for 3.10. It was a mess for some time
before.

Jim

-- 
Jim Fulton


More information about the Zope-Dev mailing list