Overlapping autopacks can fail with NoSuchFile when obsoleting packs
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Bazaar |
Fix Released
|
Low
|
John A Meinel | ||
2.0 |
Fix Released
|
Low
|
John A Meinel |
Bug Description
If two autopacks overlap while obsoleting the pack files, one of them will fail with a NoSuchFile error. This affects both bzr 2.0.4dev and 2.1.0dev5 on both Windows XP and OS X.
The attached shell script reproduces it intermittently, but you may also run into bug 507553 as well.
I can reproduce it every time as follows:
1. In bzrlib/
(a) add "import pdb" at the top of the file
(b) add "pdb.set_trace()" at the top of _create_
(c) add "pdb.set_trace()" just before the call to self._obsolete_
2. Create a dummy repository:
bzr init-repo testrepo
bzr init testrepo/branch1
bzr branch testrepo/branch1 testrepo/branch2
3. Commit until it breaks into the debugger (should be the 10th time):
bzr commit -m "test" --unchanged testrepo/branch1
4. In a separate window, commit on the other branch:
bzr commit -m "test" --unchanged testrepo/branch2
5. Both windows should now be in the debugger and stopped at _create_
6. In the first window type "c" to continue.
7. Repeat in the second window.
8. Both windows should now be at the breakpoint just before "obsolete_packs"
9. In the first window type "c" to continue. The commit should succeed.
10. In the second window type "c". The commit will fail with an error such as:
bzr: ERROR: No such file: u'/Users/
Full traceback:
File "/Users/
return the_callable(*args, **kwargs)
File "/Users/
ret = run(*run_argv)
File "/Users/
return self.run_
File "/Users/
return self._operation
File "/Users/
self.cleanups, self.func, *args, **kwargs)
File "/Users/
result = func(*args, **kwargs)
File "/Users/
exclude=
File "/Users/
result = unbound(self, *args, **kwargs)
File "/Users/
result = WorkingTree3.
File "/Users/
result = unbound(self, *args, **kwargs)
File "/Users/
*args, **kwargs)
File "/Users/
possible_
File "/Users/
self.cleanups, self.func, self, *args, **kwargs)
File "/Users/
result = func(*args, **kwargs)
File "/Users/
self.rev_id = self.builder.
File "/Users/
self.
File "/Users/
result = self._commit_
File "/Users/
hint = self._pack_
File "/Users/
result = self.autopack()
File "/Users/
return self._do_autopack()
File "/Users/
reload_
File "/Users/
self.
File "/Users/
'..
File "/Users/
self.
File "/Users/
raise errors.
NoSuchFile: No such file: u'/Users/
Related branches
- Vincent Ladeuil: Approve
- Robert Collins (community): Approve (based on your description alone.)
-
Diff: 358 lines (+166/-26)4 files modifiedNEWS (+7/-0)
bzrlib/repofmt/groupcompress_repo.py (+6/-5)
bzrlib/repofmt/pack_repo.py (+57/-19)
bzrlib/tests/test_repository.py (+96/-2)
Changed in bzr: | |
assignee: | nobody → John A Meinel (jameinel) |
status: | Confirmed → In Progress |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Gareth White wrote:
> Public bug reported:
>
> If two autopacks overlap while obsoleting the pack files, one of them
> will fail with a NoSuchFile error. This affects both bzr 2.0.4dev and
> 2.1.0dev5 on both Windows XP and OS X.
>
> The attached shell script reproduces it intermittently, but you may also
> run into bug 507553 as well.
>
As mentioned, similar in form to bug #507553, and thus getting the same
basic triaging.
status: confirmed
importance: low
John
=:->
-----BEGIN PGP SIGNATURE----- enigmail. mozdev. org/
PTyAACgkQJdeBCY SNAANtQgCgxbHq1 rbxTZ5KXfjCr/ Bf449N SxgMd59sQ7GCfT5 fs
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://
iEYEARECAAYFAkt
K6UAoIMcjVflUxj
=IZbC
-----END PGP SIGNATURE-----