You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by "C. Michael Pilato" <cm...@collab.net> on 2009/10/09 21:02:42 UTC

[PATCH] Make svn_err_best_message() skip tracing-only error chain links.

Hey, I've got a crazy working copy state at the moment, but I wanted to pass
this patch off for review (and commit, if you get a chance to test it and
it's all good) lest I forget about it.

Simple change, really, just making svn_err_best_message() skip past the
tracing-only error chain links when choosing which error message to return.
 Some chance that it breaks a test expectation somewhere, though, I guess,
so I didn't want to commit up without testing, and I haven't time to do that
right now.

-- 
C. Michael Pilato <cm...@collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2405676

Re: [PATCH] Make svn_err_best_message() skip tracing-only error chain links.

Posted by "Hyrum K. Wright" <hy...@hyrumwright.org>.
On Oct 9, 2009, at 4:02 PM, C. Michael Pilato wrote:

> Hey, I've got a crazy working copy state at the moment, but I wanted  
> to pass
> this patch off for review (and commit, if you get a chance to test  
> it and
> it's all good) lest I forget about it.

I applied this patch and ran davautocheck, with the following results:
At least one test FAILED, checking /home/hwright/dev/svn-trunk/tests.log
FAIL:  merge_authz_tests.py 1: skipped paths get overriding mergeinfo
FAIL:  switch_tests.py 19: out of date propset should fail after a  
relocate

merge_authz_tests.py 1:
...
CMD: svn merge -r4:8 http://localhost:5497/svn-test-work/repositories/merge_authz_tests-1/A 
  svn-test-work/working_copies/merge_authz_tests-1.restricted/A_COPY_2  
--config-dir /home/hwright/dev/svn-trunk/subversion/tests/cmdline/svn- 
test-work/local_tmp/config --password rayjandom --no-auth-cache -- 
username jrandom
<TIME = 0.248447>
Skipped missing target: 'svn-test-work/working_copies/ 
merge_authz_tests-1.restricted/A_COPY_2/B/E'
    C svn-test-work/working_copies/merge_authz_tests-1.restricted/ 
A_COPY_2/D/G
--- Merging r5 through r8 into 'svn-test-work/working_copies/ 
merge_authz_tests-1.restricted/A_COPY_2/D/H/omega':
U    svn-test-work/working_copies/merge_authz_tests-1.restricted/ 
A_COPY_2/D/H/omega
    C svn-test-work/working_copies/merge_authz_tests-1.restricted/ 
A_COPY_2/D/H/psi
Summary of conflicts:
   Tree conflicts: 2
   Skipped paths: 1
=============================================================
Merge failed to skip: svn-test-work/working_copies/ 
merge_authz_tests-1.restricted/A_COPY_2/D
=============================================================
Traceback (most recent call last):
   File "/home/hwright/dev/svn-trunk/subversion/tests/cmdline/svntest/ 
main.py", line 1172, in run
     rc = self.pred.run(sandbox)
   File "/home/hwright/dev/svn-trunk/subversion/tests/cmdline/svntest/ 
testcase.py", line 217, in run
     return self._delegate.run(sandbox)
   File "/home/hwright/dev/svn-trunk/subversion/tests/cmdline/svntest/ 
testcase.py", line 217, in run
     return self._delegate.run(sandbox)
   File "/home/hwright/dev/svn-trunk/subversion/tests/cmdline/svntest/ 
testcase.py", line 146, in run
     return self.func(sandbox)
   File "/home/hwright/dev/svn-trunk/subversion/tests/cmdline/ 
merge_authz_tests.py", line 269, in mergeinfo_and_skipped_paths
     None, 1, 0)
   File "/home/hwright/dev/svn-trunk/subversion/tests/cmdline/svntest/ 
actions.py", line 820, in run_and_verify_merge
     b_baton, check_props, dry_run)
   File "/home/hwright/dev/svn-trunk/subversion/tests/cmdline/svntest/ 
actions.py", line 937, in run_and_verify_merge2
     extra_skip, None, missing_skip, None)
   File "/home/hwright/dev/svn-trunk/subversion/tests/cmdline/svntest/ 
tree.py", line 676, in compare_trees
     singleton_handler_b, b_baton)
   File "/home/hwright/dev/svn-trunk/subversion/tests/cmdline/svntest/ 
tree.py", line 676, in compare_trees
     singleton_handler_b, b_baton)
   File "/home/hwright/dev/svn-trunk/subversion/tests/cmdline/svntest/ 
tree.py", line 676, in compare_trees
     singleton_handler_b, b_baton)
   File "/home/hwright/dev/svn-trunk/subversion/tests/cmdline/svntest/ 
tree.py", line 676, in compare_trees
     singleton_handler_b, b_baton)
   File "/home/hwright/dev/svn-trunk/subversion/tests/cmdline/svntest/ 
tree.py", line 681, in compare_trees
     singleton_handler_b(b_child, b_baton)
   File "/home/hwright/dev/svn-trunk/subversion/tests/cmdline/svntest/ 
actions.py", line 925, in missing_skip
     raise Failure
Failure
FAIL:  merge_authz_tests.py 1: skipped paths get overriding mergeinfo

switch_tests.py 19:
CMD: svn ci -m "log msg" svn-test-work/working_copies/switch_tests-19  
--config-dir /home/hwright/dev/svn-trunk/subversion/tests/cmdline/svn- 
test-work/local_tmp/config --password rayjandom --no-auth-cache -- 
username jrandom
CMD: /home/hwright/dev/svn-trunk/subversion/svn/svn ci -m log msg svn- 
test-work/working_copies/switch_tests-19 --config-dir /home/hwright/ 
dev/svn-trunk/subversion/tests/cmdline/svn-test-work/local_tmp/config  
--password rayjandom --no-auth-cache --username jrandom exited with 1
<TIME = 0.103173>
Sending        svn-test-work/working_copies/switch_tests-19/A/D
subversion/svn/commit-cmd.c:142: (apr_err=2)
subversion/libsvn_client/commit.c:853: (apr_err=2)
svn: Commit failed (details follow):
subversion/libsvn_client/commit_util.c:1627: (apr_err=2)
subversion/libsvn_delta/path_driver.c:167: (apr_err=2)
subversion/libsvn_wc/adm_crawler.c:1375: (apr_err=2)
subversion/libsvn_ra_neon/commit.c:962: (apr_err=2)
subversion/libsvn_ra_neon/util.c:1480: (apr_err=2)
subversion/libsvn_ra_neon/util.c:732: (apr_err=2)
svn: Could not open the requested SVN filesystem
EXPECTED STDERR (regexp):
.*([Oo]ut.of.date)
ACTUAL STDERR:
subversion/svn/commit-cmd.c:142: (apr_err=2)
subversion/libsvn_client/commit.c:853: (apr_err=2)
svn: Commit failed (details follow):
subversion/libsvn_client/commit_util.c:1627: (apr_err=2)
subversion/libsvn_delta/path_driver.c:167: (apr_err=2)
subversion/libsvn_wc/adm_crawler.c:1375: (apr_err=2)
subversion/libsvn_ra_neon/commit.c:962: (apr_err=2)
subversion/libsvn_ra_neon/util.c:1480: (apr_err=2)
subversion/libsvn_ra_neon/util.c:732: (apr_err=2)
svn: Could not open the requested SVN filesystem
EXCEPTION: SVNUnmatchedError
Traceback (most recent call last):
   File "/home/hwright/dev/svn-trunk/subversion/tests/cmdline/svntest/ 
main.py", line 1172, in run
     rc = self.pred.run(sandbox)
   File "/home/hwright/dev/svn-trunk/subversion/tests/cmdline/svntest/ 
testcase.py", line 146, in run
     return self.func(sandbox)
   File "/home/hwright/dev/svn-trunk/subversion/tests/cmdline/ 
switch_tests.py", line 1133, in relocate_and_propset
     wc_dir)
   File "/home/hwright/dev/svn-trunk/subversion/tests/cmdline/svntest/ 
actions.py", line 1211, in run_and_verify_commit
     verify.verify_outputs(None, None, errput, None, expected_err)
   File "/home/hwright/dev/svn-trunk/subversion/tests/cmdline/svntest/ 
verify.py", line 363, in verify_outputs
     compare_and_display_lines(message, label, expected, actual,  
raisable)
   File "/home/hwright/dev/svn-trunk/subversion/tests/cmdline/svntest/ 
verify.py", line 336, in compare_and_display_lines
     raise raisable
SVNUnmatchedError
FAIL:  switch_tests.py 19: out of date propset should fail after a  
relocate


I haven't looked into either of these errors, but am providing this  
feedback as requested.

-Hyrum


> Simple change, really, just making svn_err_best_message() skip past  
> the
> tracing-only error chain links when choosing which error message to  
> return.
> Some chance that it breaks a test expectation somewhere, though, I  
> guess,
> so I didn't want to commit up without testing, and I haven't time to  
> do that
> right now.
>
> -- 
> C. Michael Pilato <cm...@collab.net>
> CollabNet   <>   www.collab.net   <>   Distributed Development On  
> Demand
>
> ------------------------------------------------------
> http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2405676Skip 
>  past tracing-only error chain links when choosing the "best error
> message".  This allows admins to see, for example, the following in
> their Apache error_log:
>
>   [Fri Oct 09 16:37:00 2009] [error] [client 127.0.0.1] Failed to  
> load the \
>   AuthzSVNAccessFile: Circular dependency between groups 'devs1' and  
> 'devs'
>
> instead of this considerable less-helpful error:
>
>   [Fri Oct 09 16:25:28 2009] [error] [client 127.0.0.1] Failed to  
> load the \
>   AuthzSVNAccessFile: traced call
>
> * subversion/libsvn_subr/error.c:
>  (svn_err_best_message): Skip past tracing-only error chain links.
>  (svn_handle_warning2): Don't skip past tracing-only error chain
>    links here, as svn_err_best_message() (which this function calls)
>    will do that for us now.
>
> Index: subversion/libsvn_subr/error.c
> ===================================================================
> --- subversion/libsvn_subr/error.c	(revision 39902)
> +++ subversion/libsvn_subr/error.c	(working copy)
> @@ -526,10 +526,6 @@
> {
>   char buf[256];
>
> -  /* Skip over any trace records.  */
> -  while (is_tracing_link(err))
> -    err = err->child;
> -
>   svn_error_clear(svn_cmdline_fprintf
>                   (stream, err->pool,
>                    _("%swarning: %s\n"),
> @@ -540,6 +536,9 @@
> const char *
> svn_err_best_message(svn_error_t *err, char *buf, apr_size_t bufsize)
> {
> +  /* Skip over any trace records.  */
> +  while (is_tracing_link(err))
> +    err = err->child;
>   if (err->message)
>     return err->message;
>   else

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2407147