[Zope-dev] Re: Sessions and long requests = conflicts? Mcdutils?
Maciej Wisniowski
maciej.wisniowski at coig.katowice.pl
Thu Apr 12 05:10:35 EDT 2007
> If you believe that 'faster' is raising conflicts due its own internal
> data structures (OOBTree bucket splits), rather than in the
> application-dveined session data, there is a conflict-free alternative
> available: we found that it was slower than the other, and therefore
> didn't scale as well, even given the possibility of conflicts.
>
> To enable the conflict-free storage, you need to patch the
> '_BUCKET_TYPE' class-level variable of the storage to use
> 'AppendOnlyDict' rather than 'OOBTree'. E.g.:
>
> from Products.faster.sessiondata import CBSessionDataContainer
> from Products.faster.appendict import AppendOnlyDict
> CBSessionDataContainer._BUCKET_TYPE = AppendOnlyDict
>
I've changed to:
_BUCKET_TYPE = AppendOnlyDict
in sessiondata.py for SessionDataContainer and
CBSessionDataContainer.
Unfortunatelly when I run external method like
below concurrently from 3 different browsers
(Opera, FF, Konqueror) I still get conflict errors.
import time
def testme(self):
print 'testme started'
self.REQUEST.SESSION
time.sleep(50)
print 'testme after sleep'
return 'finished'
Faster 'Resolution secs' is set to 20.
Console output:
2007-04-12 10:31:50 DEBUG txn.-1260708960 new transaction
testme started
2007-04-12 10:31:51 DEBUG txn.-1277494368 new transaction
testme started
2007-04-12 10:31:54 DEBUG txn.-1252316256 new transaction
testme started
testme after sleep
2007-04-12 10:32:40 DEBUG txn.-1260708960 commit <Connection at b562e9ac>
2007-04-12 10:32:40 DEBUG txn.-1260708960 commit
testme after sleep
2007-04-12 10:32:41 INFO ZPublisher.Conflict ConflictError at /testme:
database conflict error (oid 0x2b, class
Products.faster.sessiondata.SessionDataContainer, serial this txn
started with 0x036ce4767ce55799 2007-04-12 08:22:29.272469, serial
currently committed 0x036ce480ad6d3044 2007-04-12 08:32:40.646840) (3
conflicts (0 unresolved) since startup at Thu Apr 12 10:17:09 2007)
2007-04-12 10:32:41 DEBUG txn.-1277494368 abort
2007-04-12 10:32:41 DEBUG txn.-1277494368 new transaction
testme started
testme after sleep
2007-04-12 10:32:44 INFO ZPublisher.Conflict ConflictError at /testme:
database conflict error (oid 0x2b, class
Products.faster.sessiondata.SessionDataContainer, serial this txn
started with 0x036ce4767ce55799 2007-04-12 08:22:29.272469, serial
currently committed 0x036ce480ad6d3044 2007-04-12 08:32:40.646840) (4
conflicts (0 unresolved) since startup at Thu Apr 12 10:17:09 2007)
2007-04-12 10:32:45 DEBUG txn.-1252316256 abort
2007-04-12 10:32:45 DEBUG txn.-1252316256 new transaction
testme started
testme after sleep
2007-04-12 10:33:31 DEBUG txn.-1277494368 commit <Connection at b62a8d8c>
2007-04-12 10:33:31 DEBUG txn.-1277494368 commit
testme after sleep
2007-04-12 10:33:35 DEBUG txn.-1252316256 commit <Connection at b55b982c>
2007-04-12 10:33:35 DEBUG txn.-1252316256 commit
Also after few different tires, eg. with Resolution secs == 300 I
ecountered conflicts with
AppendOnlyDict like:
2007-04-12 10:53:07 INFO ZPublisher.Conflict ConflictError at /testme:
database conflict error (oid 0x4c, class
Products.faster.appendict.AppendOnlyDict, serial this txn started with
0x036ce49409621366 2007-04-12 08:52:02.199166, serial currently
committed 0x036ce49515ed0477 2007-04-12 08:53:05.138871) (9 conflicts (0
unresolved) since startup at Thu Apr 12 10:17:09 2007)
Is there a point in faster where I can put debug message to see that
bucket splits (or something like that) happened?
--
Maciej Wisniowski
More information about the Zope-Dev
mailing list