I am encountering an occasional blocking condition when multiple processes
are concurrently updating database or beginning transactions where one or more
of the processes has attached databases.  I'm using 2.8.15, and all locks
should be "exclusive" in this version, so at least one of the processes should
not block, but all are.

I'd like to track this down, and I'd appreciate pointers into the section of
code that deals with locking of attached databases.

I'm unable to produce sample code that generates this problem reliably, but
here's the basic scenario:

I have three database, call them db1, db2, and db3.  There are multiple
processes accessing one or both of these databases.  Some processes open
separate database handles to db1 and/or db2, while other processes open a
handle to db1 and then attach db2 or open a handle to db3 and then attach db1
and db2.  (This is "supposed" to be a kosher combination, I believe.) Any
process can update either database.  There are no threads, only separate
processes (Linux).  At various times, when INSERT, UPDATE, or BEGIN statements
are being requested in the various processes (along, frequently, with one or
more SELECT statements from other processes), all processes will hang on the
database timeout, awaiting completion of the request -- apparently with all
processes awaiting receipt of a lock to allow them to proceed.

Help and/or pointers to sections of code to inspect would be greatly
appreciated!

Thanks,

Derrell

Reply via email to