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.

- Julian


Reply via email to