attempting to undo an un-undoable transaction gives "NotImplementedError" with ZODB 3.9.5
Here's an example: 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. Anyone know why it no longer does? Chris -- Simplistix - Content Management, Batch Processing & Python Consulting - http://www.simplistix.co.uk
On Thu, Aug 26, 2010 at 5:51 PM, Chris Withers <chris@simplistix.co.uk> wrote:
Here's an example:
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. An app should capture the undo exception information before calling abort. My guess is that this works much better in ZODB 3.10. Jim -- Jim Fulton
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?
An app should capture the undo exception information before calling abort.
"the app" here is Zope 2's publisher process, right?
My guess is that this works much better in ZODB 3.10.
Any particular reason? Chris -- Simplistix - Content Management, Batch Processing & Python Consulting - http://www.simplistix.co.uk
On Fri, Sep 10, 2010 at 2:27 AM, Chris Withers <chris@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
participants (2)
-
Chris Withers -
Jim Fulton