Topics include: programming, Apple, Unix, gadgets, large-scale web sites and other nerdy stuff.

CVS checkout aborted errors and Google Desktop for Mac

2007-08-03 15:37:15

For the past few months, I've had this very annoying problem with CVS checkouts. When I do a clean checkout of a branch version, something that involves pulling about 20,000 files from the CVS server, I would get random failures, that were something like this:

cvs [checkout aborted]: cannot rename file No such file or directory

I don't know precisely when this started happening, so I was never able to isolate it to a particular thing I changed on my machine. I was sure it was either something I changed, or some indication of degrading performance of my boot disk. Between those choices, I'm not sure which I prefer: if the disk is dying, at least at some point I know I will get a new disk. If it's something in my environment, then it may well linger with me for years to come, as my work environment transcends from workstation to workstation, and then eventually from job to job.

Sort of on a hunchy whim, I uninstalled Google Desktop for Mac. I really don't use it that much: I have so many files in my home directory (400,000+), and it doesn't really have any way of knowing which ones are more relevant to any particular term. I had hoped that Google Desktop would be WAY better than Apple Spotlight (which I despise), but it's actually kind of a wash. It makes sense, right? There's no user population interlinking my desktop files which can be an indicator for relevance. It would be cool if GD kept track of which files I used more (like, open()ed), but maybe that wouldn't be quite right either.

Anyway, my hunch was that the GD indexer was intercepting file creates at the system level, so it could index immediately, and this was creating some kind of race condition in CVS file creation, which then caused CVS to barf.

My wild-ass guess may or may not be right specifically, but it was spot on generally. Now that Google Desktop is off my machine, I can do clean checkouts of the source tree with no errors, and they are once against super-fast.