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

Re: reproduction script for the repository db problems

From: Yoshiki Hayashi <yoshiki_at_xemacs.org>
Date: 2001-08-21 14:17:26 CEST

At Mon, 20 Aug 2001 16:32:27 -0500,
<kfogel@collab.net> wrote:
>
> For those who want to help out with the recent repository issues, or
> just know what's going on, here are some useful documents.

> The `mass-commit' script allows you to witness several things:
>
> a) The "working copy locked" bug (issue #461)

I think I found the cause for this. I was lazy and didn't follow the
precise course described in mass-commit script. I just copied
subversion directory to import-me without running make dist. I found
that right after commit failed trying to commit non svn controlled
file, "working copy locked" messages begin to appear. I looked the
code and in some cases svn_wc_crawl_local_mods does not remove locks
when error has occured. The test log and sample patch to fix this bug
is attached.

Note that this patch changes only two places which can be triggered by
normal user operations. There're still several SVN_ERR in
svn_wc_crawl_local_mods which should be modified to remove locks
before returning errors.

I ran mass-commit with this patch applied and "working copy locked"
error was gone. Instead, I got segfault at commit #551 which I'm
investigating now.

(svn_wc_crawl_local_mods): Call remove_all_locks to remove working
  copy locks before returning upon errors.

Index: subversion/libsvn_wc/adm_crawler.c
===================================================================
RCS file: /home/penny/cvsroot/subversion/subversion/libsvn_wc/adm_crawler.c,v
retrieving revision 1.1.1.2
diff -u -r1.1.1.2 adm_crawler.c
--- subversion/libsvn_wc/adm_crawler.c 21 Aug 2001 06:21:39 -0000 1.1.1.2
+++ subversion/libsvn_wc/adm_crawler.c 21 Aug 2001 10:53:45 -0000
@@ -1486,9 +1486,12 @@
               svn_stringbuf_t *basename;
               
               if (tgt_entry->existence == svn_wc_existence_deleted)
- return svn_error_createf
- (SVN_ERR_WC_ENTRY_NOT_FOUND, 0, NULL, pool,
- "entry '%s' has already been deleted", target->data);
+ {
+ remove_all_locks (locked_dirs, pool);
+ return svn_error_createf
+ (SVN_ERR_WC_ENTRY_NOT_FOUND, 0, NULL, pool,
+ "entry '%s' has already been deleted", target->data);
+ }
 
               basename = svn_path_last_component (target,
                                                   svn_path_local_style,
@@ -1521,6 +1524,7 @@
             }
           else
             {
+ remove_all_locks (locked_dirs, pool);
               return svn_error_createf
                 (SVN_ERR_UNVERSIONED_RESOURCE, 0, NULL, pool,
                  "svn_wc_crawl_local_mods: '%s' is not a versioned resource",

----------- test log start here ----------
Doing commit #1:

Sending mc-wc-9356/trunk/subversion/libsvn_subr/svn_string.c
Sending mc-wc-9356/trunk/notes/multi-args.txt
Sending mc-wc-9356/trunk/subversion/include/svn_quoprint.h

Sending mc-wc-9356/trunk/subversion/libsvn_subr/svn_string.c
Sending mc-wc-9356/trunk/notes/multi-args.txt
Sending mc-wc-9356/trunk/subversion/include/svn_quoprint.h

Sending mc-wc-9356/trunk/subversion/libsvn_subr/svn_string.c
Sending mc-wc-9356/trunk/notes/multi-args.txt
Sending mc-wc-9356/trunk/subversion/include/svn_quoprint.h
Commit succeeded.

Doing commit #2:

Sending mc-wc-9356/trunk/notes/guis/planning.txt
Sending mc-wc-9356/trunk/subversion/tests/libsvn_vcdiff/target0.txt
Sending mc-wc-9356/trunk/subversion/clients/win32/SVNControls/frmTestMatrix.frm
Sending mc-wc-9356/trunk/subversion/libsvn_fs/txn-table.h
Sending mc-wc-9356/trunk/subversion/clients/win32/svn_com/SVNCOMps.def
Sending mc-wc-9356/trunk/www/project_footer.html
Sending mc-wc-9356/trunk/subversion/libsvn_fs/libsvn_fs.dsp

Sending mc-wc-9356/trunk/notes/guis/planning.txt
Sending mc-wc-9356/trunk/subversion/tests/libsvn_vcdiff/target0.txt
Sending mc-wc-9356/trunk/subversion/clients/win32/SVNControls/frmTestMatrix.frm
Sending mc-wc-9356/trunk/subversion/libsvn_fs/txn-table.h
Sending mc-wc-9356/trunk/subversion/clients/win32/svn_com/SVNCOMps.def
Sending mc-wc-9356/trunk/www/project_footer.html
Sending mc-wc-9356/trunk/subversion/libsvn_fs/libsvn_fs.dsp

Sending mc-wc-9356/trunk/notes/guis/planning.txt
Sending mc-wc-9356/trunk/subversion/tests/libsvn_vcdiff/target0.txt
Sending mc-wc-9356/trunk/subversion/clients/win32/SVNControls/frmTestMatrix.frm
Sending mc-wc-9356/trunk/subversion/libsvn_fs/txn-table.h
Sending mc-wc-9356/trunk/subversion/clients/win32/svn_com/SVNCOMps.def
Sending mc-wc-9356/trunk/www/project_footer.html
Sending mc-wc-9356/trunk/subversion/libsvn_fs/libsvn_fs.dsp
Commit succeeded.

Doing commit #3:

Sending mc-wc-9356/trunk/subversion/clients/cmdline/diff.c
Sending mc-wc-9356/trunk/subversion/tests/clients/cmdline/basic_tests.py
Sending mc-wc-9356/trunk/subversion/clients/win32/svn_com/SVNStatus.rgs
Sending mc-wc-9356/trunk/notes/delta.dtd
Sending mc-wc-9356/trunk/subversion/clients/win32/svn_com/SVNCOMps.def
Sending mc-wc-9356/trunk/subversion/bindings/svn_string.i
Sending mc-wc-9356/trunk/doc/user/manual/removals.texi
Sending mc-wc-9356/trunk/subversion/clients/cmdline/main.c
Sending mc-wc-9356/trunk/subversion/libsvn_wc/questions.c

Sending mc-wc-9356/trunk/subversion/clients/cmdline/diff.c
Sending mc-wc-9356/trunk/subversion/tests/clients/cmdline/basic_tests.py
Sending mc-wc-9356/trunk/subversion/clients/win32/svn_com/SVNStatus.rgs
Sending mc-wc-9356/trunk/notes/delta.dtd
Sending mc-wc-9356/trunk/subversion/clients/win32/svn_com/SVNCOMps.def
Sending mc-wc-9356/trunk/subversion/bindings/svn_string.i
Sending mc-wc-9356/trunk/doc/user/manual/removals.texi
Sending mc-wc-9356/trunk/subversion/clients/cmdline/main.c
Sending mc-wc-9356/trunk/subversion/libsvn_wc/questions.c

Sending mc-wc-9356/trunk/subversion/clients/cmdline/diff.c
Sending mc-wc-9356/trunk/subversion/tests/clients/cmdline/basic_tests.py
Sending mc-wc-9356/trunk/subversion/clients/win32/svn_com/SVNStatus.rgs
Sending mc-wc-9356/trunk/notes/delta.dtd
Sending mc-wc-9356/trunk/subversion/clients/win32/svn_com/SVNCOMps.def
Sending mc-wc-9356/trunk/subversion/bindings/svn_string.i
Sending mc-wc-9356/trunk/doc/user/manual/removals.texi
Sending mc-wc-9356/trunk/subversion/clients/cmdline/main.c
Sending mc-wc-9356/trunk/subversion/libsvn_wc/questions.c
Commit succeeded.

Doing commit #4:

svn_error: #21008 : <Tried a versioning operation on an unversioned resource>
  svn_wc_crawl_local_mods: '/work/yoshiki/tmp/mc-wc-9356/trunk/subversion/libsvn_wc/Makefile' is not a versioned resource

Doing commit #5:

svn_error: #21008 : <Tried a versioning operation on an unversioned resource>
  svn_wc_crawl_local_mods: '/work/yoshiki/tmp/mc-wc-9356/trunk/build-outputs.mk' is not a versioned resource

Doing commit #6:

svn_error: #21021 : <Attempted to lock an already-locked dir>
  commit failed: while sending tree-delta.

svn_error: #21021 : <Attempted to lock an already-locked dir>
  working copy locked: /work/yoshiki/tmp/mc-wc-9356/trunk/subversion/include

Doing commit #7:

Sending mc-wc-9356/trunk/subversion/tests/libsvn_vcdiff/target2.txt
Sending mc-wc-9356/trunk/doc/user/manual/README
Sending mc-wc-9356/trunk/subversion/tests/libsvn_wc/commit-test.c
Sending mc-wc-9356/trunk/subversion/clients/win32/svn_com/SVNCOM.rc

Sending mc-wc-9356/trunk/subversion/tests/libsvn_vcdiff/target2.txt
Sending mc-wc-9356/trunk/doc/user/manual/README
Sending mc-wc-9356/trunk/subversion/tests/libsvn_wc/commit-test.c
Sending mc-wc-9356/trunk/subversion/clients/win32/svn_com/SVNCOM.rc

Sending mc-wc-9356/trunk/subversion/tests/libsvn_vcdiff/target2.txt
Sending mc-wc-9356/trunk/doc/user/manual/README
Sending mc-wc-9356/trunk/subversion/tests/libsvn_wc/commit-test.c
Sending mc-wc-9356/trunk/subversion/clients/win32/svn_com/SVNCOM.rc
Commit succeeded.

Doing commit #8:

svn_error: #21021 : <Attempted to lock an already-locked dir>
  commit failed: while sending tree-delta.

svn_error: #21021 : <Attempted to lock an already-locked dir>
  working copy locked: /work/yoshiki/tmp/mc-wc-9356/trunk/subversion/libsvn_fs

Doing commit #9:

svn_error: #21021 : <Attempted to lock an already-locked dir>
  commit failed: while sending tree-delta.

svn_error: #21021 : <Attempted to lock an already-locked dir>
  working copy locked: /work/yoshiki/tmp/mc-wc-9356/trunk/subversion/clients/cmdline

Doing commit #10:

svn_error: #21021 : <Attempted to lock an already-locked dir>
  commit failed: while sending tree-delta.

svn_error: #21021 : <Attempted to lock an already-locked dir>
  working copy locked: /work/yoshiki/tmp/mc-wc-9356/trunk/doc/programmer/design
---------- tests log ends here (the rest of the log is omitted) ----------

-- 
Yoshiki Hayashi
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 21 14:36:36 2006

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.