Would it be useful to copy this explanation somewhere more discoverable -- 
somewhere in the source tree, or linked from the release notes page?

- Julian



Philip Martin wrote:
> Johan Corveleyn <jcor...@gmail.com> writes:
> 
>>  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?
> 
> A write operation like "svn up" opens the working copy and then executes
> a number of SQLite write transactions.  SQLite will block other reads
> while a write transaction is in progress.  With shared, non-exclusive,
> locking read operations can run between the write transactions.  There
> is a timeout (10s for Subversion) and while the whole write operation
> may take a long time the individual write transactions are generally
> shorter that the timeout.
> 
> So from an SQLite perspective most read operations may run during a
> write operation but may block before proceeding.  From a Subversion
> perspective the read operation will still fail to run if there is a
> workqueue item.  So in 1.7 read operations only work if they run between
> write transactions when the workqueue is empty.
> 
> With 1.8 exclusive locking the SQLite write lock is not dropped after
> the first write transaction but it help until the whole write operation
> is over and the database is closed.  No read operations can run while
> the SQLite write lock is held.
>

Reply via email to