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

Re: [Subclipse-dev] [Patch] Deleted resources leave phantoms

From: Manfred Klug <manklu_at_web.de>
Date: 2006-10-19 17:59:38 CEST

> -----Ursprüngliche Nachricht-----
> Von: Mark Phippard <markp@softlanding.com>
> Gesendet: 17.10.06 18:32:10
> An: dev@subclipse.tigris.org
> Betreff: Re: [Subclipse-dev] [Patch] Deleted resources leave phantoms

> Manfred Klug <manklu@web.de> wrote on 10/14/2006 12:47:03 AM:
>
> > which may reduce the performance of synchronize dramatically.
> >
> > There are two sources for the problem:
> >
> > - Status refresh with depth zero doesn't detect deleted unversioned
> resources.
> > - A bug in SyncInfoSynchronizedAccessor#flushPendingCacheWrites has as
> > consequence that the status is never deleted.
>
> I committed this one mostly on trust since your other patches have all
> been good.

Thank you.

> I tested a bunch of scenarios and did not see any regressions. I am not
> exactly sure what was fixed though.

Ok, I try a deeper explanation.

SynchronizerSyncInfoCache
-----------------------------------

If you look at setCachedSyncBytes you will see that a special value is saved
in the pending cache if the new value is null.

getCachedSyncBytes detects this value and translates it back to null.

flushPendingCacheWrites doesn't detect this value and saves it as sync status. An array
of length zero is enough for eclipse to leave the resource as phantom.

StatusCacheManager
---------------------------

refreshStatus compares the result of the svn status with the existing resources in eclipse. For
each eclipse resource, which does not have a svn status, the cached status is deleted.

The problem is that the FileModificationManager only uses depth zero refreshes and the deletion of unversioned
resources is not detected. And since there are information for the resource (the sync info), eclipse
leaves it as phantom.

Performance Problem
---------------------------

The synchronize view grabs all resources including the phantoms. At least one getStatus call is
done for every resource. And as consequence, a svn status call for each orphaned phantom takes place.

Manfred

_____________________________________________________________________
Der WEB.DE SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen!
http://smartsurfer.web.de/?mc=100071&distributionid=000000000066

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subclipse.tigris.org
For additional commands, e-mail: dev-help@subclipse.tigris.org
Received on Thu Oct 19 17:59:44 2006

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