On 12/21/10 11:08 AM, Daniel Shahaf wrote:
Blair Zajac wrote on Tue, Dec 21, 2010 at 10:55:37 -0800:
On 12/21/10 10:40 AM, Daniel Shahaf wrote:
Blair Zajac wrote on Tue, Dec 21, 2010 at 10:16:56 -0800:
4) In svn_repos_fs_commit_txn(), which order should errors be composed?
svn_fs_commit_txn()'s error as the parent followed by the
SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED error as a child? This seems to be
the standard ordering of chained errors. On the other hand, it makes it
harder to find a post-commit script error.
Actually, it will make it impossible to detect post-commit errors over
ra_dav, since that RA layer marshals only the outermost error code in an
error chain.
ra_dav already checks for SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED, it could
use svn_error_has_cause() to find it.
How can it do that if only the topmost error code is marshalled?
I first discovered that ra_dav only marshals the outermost error code
(and its error message, but nothing else of the chain) when I worked on
the atomic-revprops branch. In dev@ archives there should be some
discussions of how error chain marshalling might be implemented, but
eventually I solved the problem differently for that branch (by using
another error-signalling mechanism).
ra_svn marshals full error chains.
Sorry, I was thinking of mod_dav_svn, not ra_dav, which checks for
SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED and clears the error.
Blair