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

Re: svn commit: r909093 - in /subversion/trunk/subversion/libsvn_wc: adm_ops.c workqueue.c workqueue.h

From: Philip Martin <philip.martin_at_wandisco.com>
Date: Thu, 18 Feb 2010 10:06:32 +0000

"Bert Huijben" <bert_at_qqmail.nl> writes:

> This type of changes should be handled outside the WQ operation.
>
> All workqueue operations must be able to cope with restarting multiple times.
>
> This operation can delete the entry from the local_abspath. (One of
> the tiny details in fold_scheduling :( )
>
> In that case you can get yourself a workqueue item that can never
> complete, because it can't find the entry.

In my defence I think I just moved that bug from the previous loggy
code :)

>
> The model for this kind of operations we defined to handle this was:
> * Open SqLite Transaction
> * Perform database updates
> * Insert WQ operation(s)
> * Commit Transaction.
> * Run WQ operation.
>
> This way you always have a consistent database.

OK.

>
> I'm running tests on a change that moves all entry scheduling
> changes to svn_wc_schedule_delete to a single
> svn_wc__db_temp_op_delete() operation. (The reason that it is a
> temp_op and not the normal op is that it isn't recursive)
>
> It is starting to look like my helper function handles the current
> corner cases.

Issue 3584, deleting a grandchild of a copied parent creates a base
node:

   svnadmin create repo
   svn import -mm Makefile file://`pwd`/repo/A/B/f
   svn co file://`pwd`/repo wc
   svn cp wc/A wc/A2
   svn rm wc/A2/B/f

Your new code doesn't fix that:

  sqlite wc/A2/B/.svn/wc.db "select *, kind from base_node"

gives

  1|f|1|A2/B/f||normal|file|2|$md5 $2a1af3fc2b77590499e437b2f1cbaa48|34536|2|1266486946928742|pm|infinity||1266486947000000||||

-- 
Philip
Received on 2010-02-18 11:07:20 CET

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