durusmail: durus-users: Duplicate object ID in transaction
Duplicate object ID in transaction
2005-07-13
2005-07-15
Duplicate object ID in transaction
A.M. Kuchling
2005-07-15
On Wed, Jul 13, 2005 at 11:26:44AM -0400, A.M. Kuchling wrote:
> One of the programmers here managed to corrupt a Durus database in a
> novel way.  On opening the FileStorage, the _build_index() method dies

Figured out the problem...  There was a subthread doing work at the
same time.  I thought the thread was only doing network I/O and not
touching persistent objects.  However, I forgot that we have a
clever-clever wrapper for the XML-RPC server that does a commit()
before the call and an abort() afterwards; this is so all changes made
in the current process are visible to the XML-RPC server process,
which is also looking at the Durus database.

The net effect was to perform a commit() in two different threads at
the same time.  I kept thinking that the thread was *touching* an
object, and placed my debug prints to that effect, but never saw
anything; none of my printouts would have caught double commits.

--amk

reply