[MERGE] Cleanup the ConnectionError for ssh failures

John Arbash Meinel john at arbash-meinel.com
Fri Sep 29 22:30:41 BST 2006


I'm trying to close this bug:
https://launchpad.net/products/bzr/+bug/49172

We've already fixed the basics, but right now we are outputing an error
like:

Unable to connect to ssh host badhost:None: Unhandled EOFError

The :None: really looks bad. Also, there are some code paths that leak
differently.

This patch adds a few things:

1) SocketConnectionError
   This error class has some fancier handling of error messages. It does
the right thing when handling port, or if there is extra information. It
also allows supplying a custom message, so that rather than just getting
"Failure to connect" the raising function can inform what kind of
connection was being attempted. This was already possible with
ConnectionError, I just made it a little bit easier to raise a nice
error for protocols that use host and ports.

2) Change SSHVendor to have a _raise_connection_error, which handles the
details of passing the error parameters around, and defaults msg to a
better message for SSH errors.

3) Update SSHVendor children to use this helper.

This should make SSH connection errors nicer all around.

Compare:
% ./bzr log sftp://notahost/
ssh: notahost: Name or service not known
bzr: ERROR: Unable to connect to SSH host notahost; EOF during negotiation

% bzr log sftp://notahost/
ssh: notahost: Name or service not known
bzr: ERROR: Connection error: Unable to connect to SSH host
notahost:None: EOF during negotiation

Now, we have a different bug with 'bzr+ssh://' because we don't actually
detect a failed connection unless we are using paramiko. Because
_connect() doesn't fail, only when we start trying to read/write to the
subprocess do we get a failure. And at that time we just translate it
into a bogus bzr server failure:

% bzr log bzr+ssh://notahost/
ssh: notahost: Name or service not known
bzr: ERROR: Generic bzr smart protocol error: unexpected smart server
error: None

Versus
% PATH='' /usr/bin/python2.4 bzr log bzr+ssh://notahost/
bzr: ERROR: Unable to connect to SSH host notahost; (-2, 'Name or
service not known')


Anyway, the attached patch fixes up a few places that need to be cleaned
up, and I'd like to get it merged.

John
=:->
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sftp-error-49172.patch
Type: text/x-patch
Size: 26703 bytes
Desc: not available
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20060929/2cca287a/attachment.bin 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 254 bytes
Desc: OpenPGP digital signature
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20060929/2cca287a/attachment.pgp 


More information about the bazaar mailing list