##// END OF EJS Templates
Deal with failed clone/transaction interaction...
Deal with failed clone/transaction interaction -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Deal with failed clone/transaction interaction > What is happening is that something in the transaction machinery is > causing the directory to be completely recreated. The transaction gets rolled back by its destructor. This is critical so it happens whenever an exception occurs that unwinds the stack. Unfortunately, what's happening with clone is we're trying to delete the directory during exception propagation. And a reference to the transaction is held in the exception backtrace stack frames so it still exists until the exception is completely resolved. So there's no way to do the directory delete inside the exception handling cleanly. But we can handle it similarly to the transaction itself: use an object with a destructor. manifest hash: fc38550a20d64d08333f256bbedc312493c1390b -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCxDT2ywK+sNU5EO8RAjikAJ0Tej56rAutxQDfYzVbFGtT1sEC5ACgmVds /fwdQyHn+FwshugqXLemUaM= =3f78 -----END PGP SIGNATURE-----

File last commit:

r524:230676d0 default
r535:fba26990 default
Show More
test-bad-pull.out
20 lines | 389 B | text/plain | TextLexer
+ hg clone http://localhost:20059/ copy
requesting all changes
adding changesets
abort: error 111: Connection refused
transaction abort!
rollback completed
+ echo 255
255
+ ls copy
+ cat
+ python dumb.py
+ hg clone http://localhost:20059/foo copy2
requesting all changes
adding changesets
abort: HTTP Error 404: File not found
transaction abort!
rollback completed
+ echo 255
255
+ set +x