[Zope-dev] RAMSessionDataContainer: broken?

Marius Gedminas marius at gedmin.as
Fri Jan 7 03:04:40 EST 2011


On Wed, Jan 05, 2011 at 08:24:56PM +0200, Marius Gedminas wrote:
> Is anyone using RAMSessionDataContainer?  I've a suspicion that it is
> utterly broken with modern ZODB versions.
> 
> If I'm not mistaken, MVCC requires you to either call connection.sync()
> or open a new connection for every request -- otherwise MVCC
> invalidations don't get processed and you always see old versions of
> cached objects.
> 
> RAMSessionDataContainer keeps an open connection for every thread, and
> that connection is never closed, never synced.

And that's fine, since Connection had afterTransaction and
newTransaction hooks which perform a MVCC sync on transaction
boundaries.  I missed that when I was reading the source the first time.

Now I've no explanation at all for these:
> 2011-01-05T10:42:21 WARNING ZopePublication Competing writes/reads at {URL}: database conflict error (oid 0x54, class BTrees.OOBTree.OOBTree, serial this txn started with 0x038b65ac32bee222 2011-01-05 15:40:11.893509, serial currently committed 0x038b65ae561f1999 2011-01-05 15:42:20.184723)
> ------
> 2011-01-05T10:42:21 WARNING ZopePublication Competing writes/reads at {URL}: database conflict error (oid 0x54, class BTrees.OOBTree.OOBTree, serial this txn started with 0x038b65ac32bee222 2011-01-05 15:40:11.893509, serial currently committed 0x038b65ae561f1999 2011-01-05 15:42:20.184723)
> ------
> 2011-01-05T10:42:21 WARNING ZopePublication Competing writes/reads at {URL}: database conflict error (oid 0x54, class BTrees.OOBTree.OOBTree, serial this txn started with 0x038b65ac32bee222 2011-01-05 15:40:11.893509, serial currently committed 0x038b65ae561f1999 2011-01-05 15:42:20.184723)
> ------
> 2011-01-05T10:42:21 WARNING ZopePublication Competing writes/reads at {URL}: database conflict error (oid 0x54, class BTrees.OOBTree.OOBTree, serial this txn started with 0x038b65ac32bee222 2011-01-05 15:40:11.893509, serial currently committed 0x038b65ae561f1999 2011-01-05 15:42:20.184723)
> ------
> 2011-01-05T10:42:21 ERROR SiteError {URL}
> Traceback (most recent call last):
>   File "/home/zope/eggs/zope.publisher-3.12.4-py2.6.egg/zope/publisher/publish.py", line 137, in publish
>     publication.afterCall(request, obj)
>   File "/home/zope/eggs/zope.app.publication-3.12.0-py2.6.egg/zope/app/publication/browser.py", line 48, in afterCall
>     super(BrowserPublication, self).afterCall(request, ob)
>   File "/home/zope/eggs/zope.app.publication-3.12.0-py2.6.egg/zope/app/publication/zopepublication.py", line 215, in afterCall
>     txn.commit()
>   File "/home/zope/eggs/transaction-1.1.1-py2.6.egg/transaction/_transaction.py", line 329, in commit
>     self._commitResources()
>   File "/home/zope/eggs/transaction-1.1.1-py2.6.egg/transaction/_transaction.py", line 443, in _commitResources
>     rm.commit(self)
>   File "/home/zope/eggs/ZODB3-3.9.7-py2.6-linux-i686.egg/ZODB/Connection.py", line 566, in commit
>     self._commit(transaction)
>   File "/home/zope/eggs/ZODB3-3.9.7-py2.6-linux-i686.egg/ZODB/Connection.py", line 614, in _commit
>     self._store_objects(ObjectWriter(obj), transaction)
>   File "/home/zope/eggs/ZODB3-3.9.7-py2.6-linux-i686.egg/ZODB/Connection.py", line 666, in _store_objects
>     s = self._storage.store(oid, serial, p, '', transaction)
>   File "/home/zope/eggs/ZODB3-3.9.7-py2.6-linux-i686.egg/ZODB/utils.py", line 255, in __call__
>     return func(*args, **kw)
>   File "/home/zope/eggs/ZODB3-3.9.7-py2.6-linux-i686.egg/ZODB/MappingStorage.py", line 258, in store
>     oid=oid, serials=(old_tid, serial), data=data)
> ConflictError: database conflict error (oid 0x54, class BTrees.OOBTree.OOBTree, serial this txn started with 0x038b65ac32bee222 2011-01-05 15:40:11.893509, serial currently committed 0x038b65ae561f1999 2011-01-05 15:42:20.184723)
> 
> Note how "serial this txn started with" doesn't change in all the
> retries.

Any ideas?

Marius Gedminas
-- 
http://pov.lt/ -- Zope 3/BlueBream consulting and development
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
Url : http://mail.zope.org/pipermail/zope-dev/attachments/20110107/0be090ff/attachment.bin 


More information about the Zope-Dev mailing list