John, I apologize for top-posting. I will insert notes in your email, below:<br><br><div class="gmail_quote">On Tue, Aug 17, 2010 at 11:31 AM, John Arbash Meinel <span dir="ltr"><<a href="mailto:john@arbash-meinel.com">john@arbash-meinel.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">-----BEGIN PGP SIGNED MESSAGE-----<br>
Hash: SHA1<br>
<div class="im"><br>
Maritza Mendez wrote:<br>
><br>
> I am running bzr 2.2 packaged with bzr-explorer for Windows with the<br>
> same "big" project I've described here before.<br>
><br>
> I have a shared repo at D:/VCS/bzrEval with main branch<br>
> D:/VCS/bzrEval/trunk and I branch to D:/VCS/bzrEval/dev_d within the<br>
> shared repo and I get the following message in .bzr.log (and in the<br>
> bzr-explorer GUI):<br>
><br>
> ImmortalLimbo: Unable to delete transform temporary directory<br>
> D:/VCS/bzrEval/dev_d/.bzr/checkout/limbo.<br>
> Please examine D:/VCS/bzrEval/dev_d/.bzr/checkout/limbo to see if it<br>
> contains any files you wish to<br>
> keep, and delete it when you are done.<br>
><br>
> [Traceback is attached]<br>
><br>
> It turns out that the limbo directory is empty. But what would I have<br>
> done if it had files in it? I need to understand this well enough to be<br>
> able to explain it to people who are just trying to get their (non-bzr)<br>
> jobs done.<br>
><br>
<br>
</div>I have a strong suspicion you have a filesystem race condition, though I<br>
don't know *why*. Specifically, if you run bzr, get this error, and then<br>
look and find the directory empty, I would guess that for a brief moment<br>
after we issued a rename command, it didn't actually take affect before<br>
we issued the 'rmdir' command.<br>
<br></blockquote><div><br>I did browse (with Windows Explorer) the limbo directories during the branch operation. There were seven directories matching the pattern new-\d. I did not open any files. I only opened directories and saw the catalogs. After the branch operation completed (with the Limbo message), the limbo directory was empty. Perhaps I created a race condition simply by having the directory catalogs open for reading?<br>
</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Is 'D:' a mounted directory or is it a local disk? A mounted directory<br>
would be much more likely to experience a race condition.<br>
<br></blockquote><div><br>D: is a local disk. <br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
If you really do have a race, one option internally is to just add a<br>
polling loop around the rmdir. So we try to delete it, get not-empty,<br>
wait a tick or two, then try again.<br>
<br></blockquote><div><br>Yeah. I suspect you like that as much I do. I admit I have written code like that for Windows. I'm not proud of it.<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
I don't know if you are comfortable running bzr from source rather than<br>
from the installed copy. If you are, then we can pretty easily work up<br>
some patches that would at least make debugging this easier. (When we<br>
get a rmdir failure, just listdir() the directory, to see what is there.<br>
If *that* comes up empty, then your system is lying to us for some reason.)<br>
<br></blockquote><div><br>Sure. I use to run bzr from source all the time, until you guys started getting good at packaging it. :) :)<br><br>I would be happy to try that out, but since my attempts to reproduce the observation have so far failed, I suggest that we hold off until I can reproduce it at least one-in-five times.<br>
</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Another possibility is some sort of race condition with Virus Scanners.<br>
They may lock a directory while they are looking at newly created<br>
content, and then after we've moved all the content out, they haven't<br>
stopped searching that dir. (as an example.) Though honestly, I would<br>
expect that to cause problems moving files out of the directory, rather<br>
than problems deleting the directory.<br>
<br></blockquote><div><br>I agree. I think we'd have a lot of problems with bzr (and other tools) if our virus scanner were getting in the way.<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
And one further option. Switch to using lightweight checkouts and<br>
treeless branches. You'll likely be better served by this in the long<br>
run (since we don't have to recreate the whole tree content, just the<br>
few files which are actually different). But some of it will depend on<br>
your specific needs. (And yes, it doesn't solve the problem if you still<br>
experience the limbo issue on the first checkout.)<br>
<br></blockquote><div><br>We've been avoiding lightweight checkouts, because we have times of day when our internal network is saturated anyway, which makes any operations which need the network problematic. I know that's our problem and bzr can't do anything about it, but that's why we favor full branches.<br>
<br>Thanks, and i will try to reproduce the observation a few more times today and report back.<br><br>~M<br><br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
John<br>
=:-><br>
-----BEGIN PGP SIGNATURE-----<br>
Version: GnuPG v1.4.9 (Cygwin)<br>
Comment: Using GnuPG with Mozilla - <a href="http://enigmail.mozdev.org/" target="_blank">http://enigmail.mozdev.org/</a><br>
<br>
iEYEARECAAYFAkxq1XgACgkQJdeBCYSNAANT0ACdEhpTHXQVQGndFxjcm0DVIihA<br>
5JkAn2Dx+Ez/G8FhXGj2YqXM/NWaC/+g<br>
=n48+<br>
-----END PGP SIGNATURE-----<br>
</blockquote></div><br>