Merge lp:~spiv/bzr/hpss-second-push-error-bug-437626 into lp:bzr/2.0
Proposed by
Andrew Bennetts
Status: | Merged |
---|---|
Approved by: | John A Meinel |
Approved revision: | no longer in the source branch. |
Merged at revision: | not available |
Proposed branch: | lp:~spiv/bzr/hpss-second-push-error-bug-437626 |
Merge into: | lp:bzr/2.0 |
Diff against target: |
81 lines 3 files modified
NEWS (+4/-0) bzrlib/knit.py (+4/-2) bzrlib/tests/per_versionedfile.py (+37/-0) |
To merge this branch: | bzr merge lp:~spiv/bzr/hpss-second-push-error-bug-437626 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
John A Meinel | Approve | ||
Review via email: mp+13680@code.launchpad.net |
To post a comment you must log in.
This fixes bug 437626. The problem was that the fairly subtle requirements of add_lines(..., missing_ compression_ parents= True) were not being met by the way insert_ record_ stream was calling it multiple times (in effectively random order) for the one set of buffered index entries. The correct thing to do is call add_lines just once with all buffered entries together.
The result of the bug was that for C->B and B->A (where -> means left depends on right as a compression parent) get_missing_ compression_ parents would sometimes incorrectly report [B,A] rather than just [A], which then leads to fetch thinking that keys are still missing.
I feel a bit like a docstring or comment ought to be clearer about this, but really if you read carefully this requirement is already implicit, and the comments/docstrings for this part of the code are already getting towards the "eyes glaze over" point. On the other hand I've added a test so the chances of this regressing are pretty low.