Greg Hudson wrote:
>On Thu, 2003-02-20 at 16:39, Branko Čibej wrote:
>
>
>>>The more complex question is whether we need to be creating BDB
>>>transactions as often as we do, or whether we can get away with
>>>locking -- or nothing at all -- under some circumstances.
>>>
>>>
>
>
>
>>Yup. Except that "nothing at all" is likely to cause quite a few
>>headaches. :-)
>>
>>
>
>Really? It seems like we should only have to lock around the final step
>of a commit (the auto-merge), and everything else (report operations,
>most of a commit) can operate unlocked.
>
>
Greg! I expected better of you. :-)
Subversion txns do operate on logically separate node trees, but you're
forgetting that they use the same database tables as the other
operations. In the absence of "svn obliterate", you /can/ read from some
of our tables without locking the row (the nodes table comes to mind),
but the representations table isn't one of them -- representations can
change due to deltification, so you have to lock the rep when you read
it. You always have to create new rows in a transaction, too, at least
in the tables that use the "next-id" mechanism.
Also, there's no rule that says you have to create all of a commit txn
from a single-threaded client using a commit editor, or indeed from a
single client. You could easily have two processes building the commit
txn at the same time.
--
Brane Čibej <brane_at_xbc.nu> http://www.xbc.nu/brane/
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Fri Feb 21 06:32:27 2003