"Bert Huijben" <b...@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