Philip Martin wrote on Wed, Nov 16, 2011 at 18:56:56 +0000:
> Daniel Shahaf <d...@daniel.shahaf.name> writes:
> 
> >> fs_fs knows that in this case the root cause is important and that the
> >> error chain is mostly useless.  mod_dav_svn, and svnserve, cannot know
> >> that so would have to print the whole chain in every case.
> >
> > "In this case"?  How do you know what the case is?  It might be a disk
> > problem, not just the specific error that triggered your fix.
> 
> Getting the rep from the rep-cache database failed.  The root error is
> the one that matters, whether it is "permission denied" or "wrong sqlite
> version" or "i/o error".  Recording "failed to open database" is not
> useful.
> 

On the other hand, recording "Permission denied" without also recording
that it's related to the rep-cache DB, or to a particular rev file, is
also an instance of removing relevant information.

I suggested on IRC to make the code record the complete error chain.

> > Should we add some SQLite error code to the if() condition whose else()
> > branch you patched?  For example, "SQLite db is corrupted" would appear
> > to be serious enough (if it's not already caught by the
> > SVN_ERR_FS_CORRUPT check).
> 
> That branch doesn't clear the error, I assume it gets handled elsewhere.

Pretty much nothing catches SVN_ERR_FS_CORRUPT and assertion errors, so
I expect errors caught in the if() branch propagate all the way to
mod_dav_svn, if not to mod_dav itself.

Reply via email to