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.