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

Re: log cache corruption

From: <Stefan.Fuhrmann_at_etas.com>
Date: Tue, 27 May 2008 15:02:57 +0200

Hello,

it took me some time to find the latter but now, all isses have
hopefully been addressed on /trunk.

Stefan Küng <tortoisesvn_at_gmail.com> wrote on 05/14/2008 06:43:37 PM:

> We've already got some crash reports for the RC releases where the log
> cache got corrupted (I've sent you one via PM - the other ones crash for

> the same reason). From what I could find out, this happens when users
> set up test repos, remove them, create new test repos at the same
> location -> the cache somehow fails to recognize that there's a
> different repository even though the URL stays the same.

Exchanging repositories should not crash the log cache code.
After some experimenting and analysing the crash report you sent me,
I'm pretty sure that this was only the trigger but not the only way
to make TSVN crash. To reproduce this use-case, just change the
log cache files an see what happens ..

A code inspection asured me that there is nothing special about
changing the repository db that could not happen with missing log
data or working copies referring to lately deleted branches.

r12890,13003 and 13029 should fix the problem.
 
I also finalized the detection of "toggled" repositories with r13022.
Neither on-line nor off-line access should be hurt now.

> Now, even though we have to fix this bug and the crash, I suggest one
> 'fallback' for this:
>
> if the cache can't be loaded (because it crashes), we should catch that
> exception and remove the cache file automatically. That way the user can

> keep working without crashing every time from that moment on. Yes I know

> the user can clear the cache manually, but most users won't know that
> the crash happens because of the cache (most won't even know about the
> cache) and many won't come to the mailing list for help either - they
> will just rant about TSVN instead.
>
> So, I propose the following:
> * before loading the cache file, rename it
> * load the renamed file
> * if there's a crash, next time the cache should be loaded it isn't
> there anymore (only the renamed one which isn't used)
> * if there's no crash (which should be the default :) ) then after a
> successful load the file is renamed back

r13018,13020 and 13025 implements a slightly different mechanism:
Whenever TSVN fails to *close* properly, the cache will be removed.
Rationale: the cache is read only once and, in almost all cases,
successfully.
Log caching related crashes may occur any time later, e.g. upon CRTL-F5.

> This however assumes that no two instances of TortoiseProc access the
> cache file at the same time.

This is also taken care of by these patches.

-- Stefan^2.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_tortoisesvn.tigris.org
For additional commands, e-mail: dev-help_at_tortoisesvn.tigris.org
Received on 2008-05-27 15:03:17 CEST

This is an archived mail posted to the TortoiseSVN Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.