[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