[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Upgrade to single-DB: problem locking an empty DB

From: Hyrum K. Wright <hyrum_wright_at_mail.utexas.edu>
Date: Tue, 10 Aug 2010 10:31:50 -0500

On Tue, Aug 10, 2010 at 10:26 AM, Julian Foad <julian.foad_at_wandisco.com> wrote:
> On Tue, 2010-08-10 at 15:31 +0100, Julian Foad wrote:
>> Upgrading a WC to single-DB:
>> upgrade_to_wcng() calls
>>   svn_wc__db_upgrade_begin() to create a new DB, and then
>>   svn_wc__db_wclock_obtain() and then
>>   svn_wc__write_upgraded_entries()
>> The _wclock_obtain() fails because it checks that the node with relpath
>> "" exists.  Normally in libsvn_wc a new DB is created with
>> svn_wc__db_init() which inserts a row for relpath "", but
>> svn_wc__db_upgrade_begin() doesn't.
>> What's the best solution here?  Not lock it?  Have
>> svn_wc__db_upgrade_begin() create an initial "" row?  Have
>> svn_wc__db_wclock_obtain() NOT check for existence of a "" row?  The
>> first and last options don't sound right.  Creating an initial "" row
>> does sound right, and requires (presumably) a modification of
>> svn_wc__write_upgraded_entries().
> The upgrade function is creating new DBs (or a new single-DB).  Should
> it perhaps be asking for a lock on the DB as a whole, as distinct from a
> recursive lock on the WC root directory?  In normal operation, those two
> mean the same, but maybe here we need to distinguish these as two
> different concepts.

Where is the upgrade DB being created? If it's called something like
'wc.db.foo', I would think you don't require *any* locking, since no
other process is going to be looking for that file. Do the upgrade,
and then move it in to place before nuking all the old data.

Received on 2010-08-10 17:32:33 CEST

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.