Brian Sutherland wrote at 2008-7-13 12:41 +0200:
On Sun, Jul 13, 2008 at 09:05:16AM +0200, Dieter Maurer wrote:
Andreas Jung wrote at 2008-7-12 07:17 +0200:
... What do you mean by "higher level"? I think that the check within the ZPublisher is the highest and right place.
Code running after the commit() expects a new transaction and now will not get that.
You refer to code executed as part of a ZODB post-commit handler? If a transaction is doomed then such handlers should never be executed - right?
The problem is that a doomed transaction prevents "joining".
This means that any operation that causes a join during error handling will fail. Examples are: accessing a session, accessing a relational database.
The bug is in the ZODB ("transaction") code. A doomed transaction should not prevent joining.
Do you have an example of this bug? It should be fixed. It is already tested in doom.txt like this:
Thus, maybe, someone already has fixed this problem. In this case, executing the error handling in the same transaction as the main request should no longer make problems (this was where I have seen the bug). -- Dieter