** 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
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs