How do we fix 288751?

Martin Pool mbp at canonical.com
Wed Nov 12 02:00:23 GMT 2008


On Wed, Nov 12, 2008 at 7:53 AM, Robert Collins
<robertc at robertcollins.net> wrote:
> On Tue, 2008-11-11 at 13:56 -0500, Aaron Bentley wrote:
>>
>>
>> So what do we do about this?
>> - Bless the current behavior?
>
> I don't think so, because I think the design decision to not compress
> over repo boundaries is a good one. We can reopen the discussion if you
> think the decision is wrong though.

I agree that not having deltas spanning repositories is a good idea.

We need to look in future for ways to make sure the code actually
implemented is meeting the designed invariants in all cases.  It's a
bit too easy to have infrequent but non-negligible cases where we emit
something that works but is harder to handle in future.

One thing we could have done would be to put this assertion into
check, and then run that on some real repositories once it's
integrated and used on live data, but before it's generally supported.

>
>> - Bless the current behavior and teach autopack to fetch external
>> compression parents?
>
> This would require third party object access - like site to site ftp;
> this is difficult to do with both security and peformance.
>
>> - Forbid the current behavior and teach reconcile to fetch external
>> compression parents?
>
> I think we should forbid the current behaviour. I'm not sure that
> reconcile should fetch the parents, it may me that we have few enough
> folk in this situation that we can just say 'remirror' or offer a small
> repair script. (Because reconcile is heavyweight and slow, it may be
> onerous for folk trying to stack to run it).

So the constraints are: the 1.6 and 1.9 formats de facto do contain
text deltas spanning physical repositories, and they should remain
readable.  These deltas can only be resolved by the client because the
server cannot necessarily reach the stacked-on repository.  We would
prefer not to generate these deltas in future both from general
principle and because it limits what the server can do.

We could have code run from the client that rewrites the packs to have
full texts where they currently have these deltas.

We have a choice of where that code lives, and the degree of polish
here somewhat depends on whether we expect people to call it.  It
could be in reconcile, in pack, or in a special plugin.  If it was in
pack, for instance, then if the server detects it, it could
communicate to the client that it should repack itself without the
smart verb.

-- 
Martin <http://launchpad.net/~mbp/>



More information about the bazaar mailing list