[Gary Poster]
> I'm guessing this thread has to do with the recent _synch changes in
> transaction._manager.py.  I can't get Zope 3 to [serve pages] without
> the following change to the HEAD (which seems right enough, but this
> is just on the basis of a quick look).  Is this right?

It's on the right track -- good eye!  It misses a spot, and it's simpler to
repair it inside _new_transaction().  So I did that.  Please `svn up` Zope3
and try again.  By way of apology, I owe you one free hint to the level of
your choice at:


Staying up all night is a good idea ...

Curious:  ZODB 3.4's and Zope 2.8's and Zope3's test suites all let this one
slip by.  To provoke this, looks like Zope3 had to do transaction.begin()
before it opened any connections.  Nothing wrong with that, it's just
unusual -- at least for human-written code <wink>.

> Index: transaction/_manager.py
> ===================================================================
> --- transaction/_manager.py     (revision 30261)
> +++ transaction/_manager.py     (working copy)
> @@ -101,6 +101,9 @@
>           if txn is not None:
>               txn.abort()
>           synchs = self._synchs.get(tid)
> +        if synchs is None:
> +            from ZODB.utils import WeakSet
> +            synchs = self._synchs[tid] = WeakSet()
>           txn = self._txns[tid] = Transaction(synchs, self)
>           _new_transaction(txn, synchs)
>           return txn

For more information about ZODB, see the ZODB Wiki:

ZODB-Dev mailing list  -  ZODB-Dev@zope.org

Reply via email to