Comment 7 for bug 354036

Revision history for this message
Andrew Bennetts (spiv) wrote : Re: ErrorFromSmartServer - AbsentContentFactory object has no attribute 'get_bytes_as' exception while pulling from Launchpad

I can reproduce this locally with a copy of your branches from Launchpad (copied via SFTP).

It's not a regression in bzr.dev, it's a bug that's new in 1.13. It seems to stem from the fact that with the new smart server verbs some of the "which records to fetch" logic runs on the server rather than the client, and in the context they run on the server the server does not have any knowledge of the fallback (stacked-on) repository. This is turn reveals a bug in working on a stacked repository that doesn't have its fallbacks set.

Specifically, fileids_altered_by_revision_ids is returning records that aren't altered in a particular revision, and this happens because that revision's parent is a ghost in this repo (but would be present in the fallback). The fix is probably to make the server return placeholder "you need this record, but I don't have it" records for those records. That basically amounts to serialising AbsentContentFactory on the wire, I guess.

1.13 clients won't understand that reply, but 1.13 clients are already failing in this case because of the server bug, so there's no new backwards compatibility issue.

After extending the server to handle this case, I'll make backports of the fix for 1.13 and 1.14rc1. We'll want that fix backported to Launchpad's deployment and probably to Jaunty as well. We may want to release a 1.13.2.