[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