durusmail: durus-users: assert oid == oid2 AssertionError
assert oid == oid2 AssertionError
2006-11-13
2006-11-14
2006-11-16
2006-11-16
assert oid == oid2 AssertionError
Matthew Scott
2006-11-13
This looks suspiciously like the errors I would get under high load
when I tried to use Schevo (which uses a slightly-modified Durus
under the hood) in a multi-threaded environment despite the fact that
I used locks to serialize access to the in-process Durus storage.

The fix that worked for me was the one described here:

http://mail.mems-exchange.org/durusmail/durus-users/698/

....followed by the bugfix suggested here:

http://mail.mems-exchange.org/durusmail/durus-users/703/

As far as I can tell, these are scheduled for inclusion in the next
Durus release, but for now Durus 3.5 out of the box is not reliable
in a multithreaded environment, even when Durus database access is
serialized.

Hope this helps...


On 2006 Nov 13, at 11:52, Aïssa HAMMOUCHI wrote:

> i'm trying to make working a connection pooling in my app
> (i'm using mod_scgi/apache/quixote/durus)
>
> the firsts 40 requests (i call  db to get one object)  get a
> traceback, then tracebacks disappear after this occured.
> if i stop my app and restart durus/scgi and launch 200 requests
> with a load test tool, i get the same scenario after that 40 or
> more requests are done, tracebacks disappear and the next requests
> work fine with no tracebacks..
>
> what's wrong ?
>
> [ ... snip ... ]
> [2006-11-13 19:53:46] exception caught
> Traceback (most recent call last):
>   File "/home/ah/src/alternate-modules/quixote/publish.py", line
> 278, in process_request
>     output = self.try_publish(request)
>   File "/home/ah/src/alternate-modules/quixote/publish.py", line
> 253, in try_publish
>     output = self.root_directory._q_traverse(components)
>   File "/home/ah/src/alternate-modules/quixote/directory.py", line
> 63, in _q_traverse
>     return obj._q_traverse(path)
>   File "/home/ah/src/alternate-modules/quixote/directory.py", line
> 63, in _q_traverse
>     return obj._q_traverse(path)
>   File "/home/ah/src/alternate-modules/quixote/directory.py", line
> 57, in _q_traverse
>     obj = self._q_lookup(component)
>   File "/home/ah/pymods/fidji/ui/browse.ptl", line 122, in _q_lookup
>     body(menu(), list_doc())
>   File "/home/ah/pymods/fidji/ui/browse.ptl", line 117, in list_doc
>     "
%s
"%(i.id,i.nom) > File "/home/ah/src/alternate-modules/durus/persistent.py", line > 92, in __getattribute__ > self._p_load_state() > File "/home/ah/src/alternate-modules/durus/persistent.py", line > 135, in _p_load_state > self._p_connection.load_state(self) > File "/home/ah/src/alternate-modules/durus/connection.py", line > 185, in load_state > pickle = self.get_stored_pickle(oid) > File "/home/ah/src/alternate-modules/durus/connection.py", line > 111, in get_stored_pickle > assert oid == oid2 > AssertionError -- Matthew Scott mscott@springfieldtech.com
reply