Matthew Scott | 13 Nov 2006 19:08

Re: assert oid == oid2 AssertionError

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
>     "<br><a href='/document/%s'>%s</a><br>"%(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 <at> springfieldtech.com

Gmane