Re: RAMSessionDataContainer: broken?

Marius Gedminas <[email protected]>
Newsgroups gmane.comp.web.zope.devel
Message-ID <20110107080440.GB15877@platonas>
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

_______________________________________________
Zope-Dev maillist  -  [email protected]
https://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope-announce
 https://mail.zope.org/mailman/listinfo/zope )
signature.asc (application/pgp-signature, 198 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)

iEYEARECAAYFAk0myRgACgkQkVdEXeem148HKgCdFxLxOx6OPmeR5wx/QSJGdcI+
uswAn3S2ypMr94U3vyyFu3WGC1XDVZsR
=FGpH
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.