** Description changed: - When bzr < 1.13.2 (and bzr 1.14rc1) push a stacked branch they do not - take care to push all the parent inventories for the transferred - revisions. This means that a smart server serving that branch often - cannot calculate inventory deltas for the branch (because smart server - does not/cannot open fallback repositories). Prior to 1.13 the server - did not have a verb to stream revisions out of a repository, so that's - why this bug has appeared now. - - bzr.dev and 1.14rc2 have been fixed to push up complete branches always, - and bzr.dev has a fix for the server to make unfixed clients that use - the Repository.insert_stream* HPSS verbs send the missing records. (See - also bug 368418 about the server fix in bzr.dev) - - So upgrading clients to 1.14rc2 or newer fixes this bug. Alternatively - upgrading the server to bzr.dev r4307 and using 1.13 or newer clients to - push via HPSS fixes this too. - Workarounds ---------------- - There are multiple workarounds for dealing with an affected branch. In - rough order of preference: + If you can write to the branch: - - Use the 'foo.py' script Robert has attached to this bug to repair the affected branch (by fetching the missing parts from the stacked-on repository) - - Delete the affected branch and repush it with a fixed client (1.14rc2 or newer) - - Use non-smart URLs to access an affected branch, e.g. sftp:// or nosmart+bzr+ssh://. This works because the client can access the stacked-on repository, and the missing data is present there. + - Use the fixer script attached to this bug to repair the affected branch (by fetching the missing parts from the stacked-on repository). Run it as 'fix-branch.py bzr+ssh://bazaar.launchpad.net/~user/project/branch'. You must have write access to the branch to do this. + - Alternatively just delete the affected branch and repush it with a fixed client (1.14rc2 or newer) + If you cannot write to the branch: + + - Use non-smart URLs to access an affected branch, e.g. sftp:// or + nosmart+bzr+ssh://. This works because the client can access the + stacked-on repository, and the missing data is present there, but will + be slower as it disables streaming fetch. + + Details + ------- + + When bzr introduced stacking the data pushed to a stacking branch was + too minimal. This lack was discovered when streaming fetch from stacked + branches was enabled. The server needs to be able to generate a delta of + the data in its graph to decide what to send the client, and the ACF + record sent to the client is an indicator that it was failing to do this + correctly. + + Resolution + ---------- + + Use bzr.dev newer than r4037 (or bzr 1.15 or newer) on the server and + bzr 1.13 or newer as clients with bzr+ssh or bzr+http urls. If the + server cannot run 1.15, use bzr 1.13.2 or 1.14rc2 or newer on the + client. Do not use older bzr versions. + + bzr.dev and 1.14rc2 have been fixed on the client side to always include + enough data, and bzr.dev (and thus bzr 1.15) include a fix for the + server to make bzr 1.13 clients that use the Repository.insert_stream* + HPSS verbs send the missing records. (See also bug 368418 about the + server fix in bzr.dev) Symptom ------- When pulling affected branches, you get a traceback like this: - This manifests as exceptions from the server involving - 'AbsentContentFactory'. - - e.g. The exception below occurred while pulling lp:~rivenx/rivenx/domes - using bzr.dev r4237. - bzr: ERROR: bzrlib.errors.ErrorFromSmartServer: Error received from smart server: ('error', "'AbsentContentFactory' object has no attribute 'get_bytes_as'") Traceback (most recent call last): - File "/Library/Python/2.6/site-packages/bzrlib/commands.py", line 727, in exception_to_return_code - return the_callable(*args, **kwargs) - File "/Library/Python/2.6/site-packages/bzrlib/commands.py", line 922, in run_bzr - ret = run(*run_argv) - File "/Library/Python/2.6/site-packages/bzrlib/commands.py", line 559, in run_argv_aliases - return self.run(**all_cmd_args) - File "/Library/Python/2.6/site-packages/bzrlib/builtins.py", line 1103, in run - source_branch=br_from) - File "/Library/Python/2.6/site-packages/bzrlib/bzrdir.py", line 1139, in sprout - result_repo.fetch(source_repository, revision_id=revision_id) - File "/Library/Python/2.6/site-packages/bzrlib/repository.py", line 1465, in fetch - find_ghosts=find_ghosts, fetch_spec=fetch_spec) + ... File "/Library/Python/2.6/site-packages/bzrlib/decorators.py", line 192, in write_locked result = unbound(self, *args, **kwargs) File "/Library/Python/2.6/site-packages/bzrlib/repository.py", line 2991, in fetch pb=pb, find_ghosts=find_ghosts) File "/Library/Python/2.6/site-packages/bzrlib/fetch.py", line 84, in __init__ self.__fetch() File "/Library/Python/2.6/site-packages/bzrlib/fetch.py", line 110, in __fetch self._fetch_everything_for_search(search) File "/Library/Python/2.6/site-packages/bzrlib/fetch.py", line 138, in _fetch_everything_for_search stream, from_format, []) File "/Library/Python/2.6/site-packages/bzrlib/repository.py", line 3791, in insert_stream return self._locked_insert_stream(stream, src_format) File "/Library/Python/2.6/site-packages/bzrlib/repository.py", line 3819, in _locked_insert_stream for substream_type, substream in stream: File "/Library/Python/2.6/site-packages/bzrlib/remote.py", line 1709, in missing_parents_chain for kind, substream in stream: File "/Library/Python/2.6/site-packages/bzrlib/smart/repository.py", line 447, in record_stream for bytes in byte_stream: File "/Library/Python/2.6/site-packages/bzrlib/smart/message.py", line 336, in read_streamed_body _translate_error(self._body_error_args) File "/Library/Python/2.6/site-packages/bzrlib/smart/message.py", line 355, in _translate_error raise errors.ErrorFromSmartServer(error_tuple) ErrorFromSmartServer: Error received from smart server: ('error', "'AbsentContentFactory' object has no attribute 'get_bytes_as'") - - bzr 1.14dev on python 2.6.1 (darwin) - arguments: ['/usr/local/bin/bzr', 'branch', 'lp:~rivenx/rivenx/domes'] - encoding: 'UTF-8', fsenc: 'utf-8', lang: 'en_US.UTF-8' - plugins: - bzrtools /Library/Python/2.6/site-packages/bzrlib/plugins/bzrtools [1.13] - keychain_credential_store /Volumes/Crossroads/bahamut/.bazaar/plugins/keychain_credential_store [0.1dev] - launchpad /Library/Python/2.6/site-packages/bzrlib/plugins/launchpad [unknown] - netrc_credential_store /Library/Python/2.6/site-packages/bzrlib/plugins/netrc_credential_store [unknown] - svn /Volumes/Crossroads/bahamut/.bazaar/plugins/svn [0.5.4dev] - *** Bazaar has encountered an internal error. - Please report a bug at https://bugs.launchpad.net/bzr/+filebug - including this traceback, and a description of what you - were doing when the error occurred.
** Tags added: lp-needs ** Tags removed: lp-cp -- ErrorFromSmartServer - AbsentContentFactory object has no attribute 'get_bytes_as' exception while pulling from Launchpad https://bugs.launchpad.net/bugs/354036 You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs