On Mon, Oct 15, 2012 at 7:09 PM, <phi...@apache.org> wrote: > Author: philip > Date: Mon Oct 15 17:09:01 2012 > New Revision: 1398389 > > URL: http://svn.apache.org/viewvc?rev=1398389&view=rev > Log: > Enable SQLite exclusive locking for the command line client as this is > a major performance gain for working copies on network disks. The > libraries default to shared locking for backward compatibility, the > command line client defaults to exclusive locking and a config setting > allows the user to override the command line client.
Maybe this would be a good time to make an accurate description of what this all means in terms of concurrency. Preferably in a way that normal users understand, or at least application developers that might embed svn libraries and such. What kinds of operations can be executed concurrently (1) when there is no exclusive locking and (2) when exclusive locking is enabled? Is there some simple underlying rule? I remember from the final stages of 1.7 development that this was all pretty fuzzy. It was clear that 1.7 was less parallellizable as 1.6 was, but precisely "how much" and "where" and "when", ... that was much less clear, at least to me. All I remember are some examples of things that couldn't be executed anymore in parallel as of 1.7. Like not being able to run 'svn log <wcitem>' while an 'svn update' is running [1]. But I don't remember a hard and fast rule, an underlying principle ... (I guess there is one, I just don't recall). With this new "exclusive" mode it's probably quite clear (no parallellism possible at all), but because of the fuzzyness of the non-exclusive behavior this leaves me wondering: "which things does this exclusive mode make impossible, which were still possible under non-exclusive mode"? What does one lose by enabling exclusive mode? [1] http://svn.haxx.se/users/archive-2012-02/0284.shtml -- Johan