[cvsnt] Re: Checkout tag extremely slow

Bo Berglund bo.berglund at telia.com
Fri Dec 10 23:52:54 GMT 2004


I think this is strange too, the val-tags file in my test server is a
list of tag strings followed by the single letter y on each line.
Like this:
Branch_Test1 y
Branch_Test y
Tag_Test_With_1-5-1-32 y
Tag_CVSNT2-0-62-1810 y

Seems to me to be about 0% useful and so it strikes me as unnecessary
to even scan something to build the file.
In any case cvs must examine every single file in the module being
checekd out for the requested tag and if recursion is on all
submodules also to look for the requested tag.
There is no point by my thinking to keep a simple list like shown
above inside CVSROOT with all tag strings in use in the repository if
there is not at the same time a reference to the files or modules that
use that tag.

If cvs is also scanning the *whole* repository to build this list then
it looks like a bug to me too...

/Bo


On Fri, 10 Dec 2004 00:34:02 +0100, jml at nykredit.dk wrote:

>I've made some experiments based on your guess, and I can confirm that the 
>problem has to do with the val-tags file, but moreso with the scanning of 
>the repository. 
>
>This is what I did:
>
>"CVS co -r sometag mymodule"
>
>If "sometag" does not exist, CVS 2.0.51d will scan the entire repository, 
>while CVS 2.0.4 will scan only the actual module (mymodule) - which I 
>think is reasonable.
>If "sometag" does exist, but are for some reason NOT in the val-tags file 
>the same thing happens.
>If "sometag" does exist and IS in the val-tags file all is well of course.
>
>The entire-repository-scans is extremely time and CPU consuming, if you 
>have a large repository (and we do!), and the scan will happen everytime 
>your miss-spell a tag-name. Even with a small repository of - say - less 
>than 10,000 files, the scan will take minutes.
>
>The problem is present in 2.0.58d also, and it has caused us to make a 
>fall-back to CVS version 2.0.4.
>
>I suggest your treat this as a bug - I think CVS should scan only the 
>indicated module, and not the entire repository, since - logically - there 
>is no chance of a match in any other module than the one you indicate in 
>the checkout command.
>
>Sincerely 
>Joergen Moeller Larsen
>
>
>jml at nykredit.dk wrote:
>> Hi,
>>
>> I recently upgraded our CVS server from version 2.0.4 to version 
>2.0.51d.
>>
>> After the upgrade it has become _extremely_ slow to checkout tags from
>> CVS.  I am talking hours in worst case. Checking out HEAD does not 
>suffer
>> from this problem. I have tried version 2.0.58d as well with same 
>result.
>> Reverting to version 2.0.4 restores normal performance.
>>
>> Any suggestions?
>
>My best guess would be that the server can't read the val-tags file for
>some reason.  If it can't read that it has to scan the whole repository
>to find out if the tag is valid (I'm convinced this could be made faster
>but the logic makes this nontrivial at the moment).
>
>Tony
>_______________________________________________
>cvsnt mailing list
>cvsnt at cvsnt.org
>http://www.cvsnt.org/cgi-bin/mailman/listinfo/cvsnt


/Bo
(Bo Berglund, developer in Sweden)



More information about the cvsnt mailing list