This is the same patch updated for bzr.dev, and with InterDifferingSerializer restored for local fetches only. For non-local fetches I'm pretty sure the streaming code path is massively faster based on the timings I've done (even via TCP HPSS to localhost).
I'm sure we do want to get rid of IDS eventually (and fix the shortcomings in streaming that John has pointed out) but doing that shouldn't block the rest of this work, even if it is a small maintenance headache.
[FWIW, if I don't restrict IDS to local-only branches I get test failures like:
Traceback (most recent call last):
File "/home/andrew/warthogs/bzr/inventory-delta/bzrlib/tests/per_interrepository/test_fetch.py", line 137, in test_fetch_parent_inventories_at_stacking_boundary_smart_old
self.test_fetch_parent_inventories_at_stacking_boundary()
File "/home/andrew/warthogs/bzr/inventory-delta/bzrlib/tests/per_interrepository/test_fetch.py", line 181, in test_fetch_parent_inventories_at_stacking_boundary
self.assertCanStreamRevision(unstacked_repo, 'merge')
File "/home/andrew/warthogs/bzr/inventory-delta/bzrlib/tests/per_interrepository/test_fetch.py", line 187, in assertCanStreamRevision
for substream_kind, substream in source.get_stream(search):
File "/home/andrew/warthogs/bzr/inventory-delta/bzrlib/remote.py", line 1895, in missing_parents_chain
for kind, stream in self._get_stream(sources[0], search):
File "/home/andrew/warthogs/bzr/inventory-delta/bzrlib/smart/repository.py", line 537, in record_stream
for bytes in byte_stream:
File "/home/andrew/warthogs/bzr/inventory-delta/bzrlib/smart/message.py", line 338, in read_streamed_body
_translate_error(self._body_error_args)
File "/home/andrew/warthogs/bzr/inventory-delta/bzrlib/smart/message.py", line 361, in _translate_error
raise errors.ErrorFromSmartServer(error_tuple)
ErrorFromSmartServer: Error received from smart server: ('error', "<bzrlib.groupcompress.GroupCompressVersionedFiles object at 0xb06348c> has no revision ('sha1:98fd3a13366960dc27dcb4b6ddb2b55aca3aae7b',)")
This is the same patch updated for bzr.dev, and with InterDifferingS erializer restored for local fetches only. For non-local fetches I'm pretty sure the streaming code path is massively faster based on the timings I've done (even via TCP HPSS to localhost).
I'm sure we do want to get rid of IDS eventually (and fix the shortcomings in streaming that John has pointed out) but doing that shouldn't block the rest of this work, even if it is a small maintenance headache.
[FWIW, if I don't restrict IDS to local-only branches I get test failures like:
Traceback (most recent call last): andrew/ warthogs/ bzr/inventory- delta/bzrlib/ tests/per_ interrepository /test_fetch. py", line 137, in test_fetch_ parent_ inventories_ at_stacking_ boundary_ smart_old test_fetch_ parent_ inventories_ at_stacking_ boundary( ) andrew/ warthogs/ bzr/inventory- delta/bzrlib/ tests/per_ interrepository /test_fetch. py", line 181, in test_fetch_ parent_ inventories_ at_stacking_ boundary assertCanStream Revision( unstacked_ repo, 'merge') andrew/ warthogs/ bzr/inventory- delta/bzrlib/ tests/per_ interrepository /test_fetch. py", line 187, in assertCanStream Revision get_stream( search) : andrew/ warthogs/ bzr/inventory- delta/bzrlib/ remote. py", line 1895, in missing_ parents_ chain stream( sources[ 0], search): andrew/ warthogs/ bzr/inventory- delta/bzrlib/ smart/repositor y.py", line 537, in record_stream andrew/ warthogs/ bzr/inventory- delta/bzrlib/ smart/message. py", line 338, in read_streamed_body error(self. _body_error_ args) andrew/ warthogs/ bzr/inventory- delta/bzrlib/ smart/message. py", line 361, in _translate_error ErrorFromSmartS erver(error_ tuple) erver: Error received from smart server: ('error', "<bzrlib. groupcompress. GroupCompressVe rsionedFiles object at 0xb06348c> has no revision ('sha1: 98fd3a13366960d c27dcb4b6ddb2b5 5aca3aae7b' ,)")
File "/home/
self.
File "/home/
self.
File "/home/
for substream_kind, substream in source.
File "/home/
for kind, stream in self._get_
File "/home/
for bytes in byte_stream:
File "/home/
_translate_
File "/home/
raise errors.
ErrorFromSmartS
(for scenarios like Pack6RichRoot- >2a).]
Anyway, please review.