[elephant-devel] Dropping DB connection during writes
Tayssir John Gabbour
tjg at pentaside.org
Fri Nov 21 09:58:52 UTC 2008
Hi Ian,
The problem is, suppose I just open a store controller at the very
beginning. If I execute either of the following:
(sb-thread:make-thread
(lambda ()
(get-value "foobar"
(get-from-root *my-btree-name*
:sc *my-store-controller*))))
(sb-thread:make-thread
(lambda ()
(get-value "foobar" *my-btree*)))
there's a new connection in the database, never dying and eventually
overflowing Postgresql's limit. (That is, "select count(*) from
pg_stat_activity;" has a new row each time). A couple DB people at
work looked at the ele-postmodern code, and they say they don't see
the connection being closed down.
I must be doing something wrong, but I can't see where...
All the best,
Tayssir
Ian Eslick wrote:
> with-open-store closes the store when you're done, null'ing out *store-
> controller*. With sufficient concurrency you are likely to get a race
> condition where the if stmt in with-city-store succeeds but the body
> fails since you aren't locking access to *store-controller*.
>
> Ian
>
>
> On Nov 20, 2008, at 11:16 AM, Tayssir John Gabbour wrote:
>> Hi!
>>
>> With Elephant under both Postmodern and CLSQL, I'm consistently losing
>> my DB connection. This apparently happens when writing from fairly
>> simultaneous threads. (Two threads may write to the same btree key at
>> around the same time.)
>>
>> All I do is add objects to a BTree, keyed by their UUID. (And there's
>> two simple indexes.) No persistent metaclasses or anything; I just use
>> it as a persistent table.
>>
>> Am I doing something terribly wrong? Code and error messages at the
>> end of this email.
More information about the elephant-devel
mailing list