sync: catch exceptions when connecting to the manifest server

When connecting to the manifest server, exceptions can occur but
are not caught, resulting in the repo sync exiting with a python
traceback.

Add handling of the following exceptions:

- IOError, which can be raised for example if the manifest server
URL is malformed.
- xmlrpclib.ProtocolError, which can be raised if the connection
to the manifest server fails with HTTP error.
- xmlrpclib.Fault, which can be raised if the RPC call fails for
some other reason.

Change-Id: I3a4830aef0941debadd515aac776a3932e28a943
This commit is contained in:
David Pursehouse 2012-08-23 10:21:26 +09:00 committed by gerrit code review
parent 2dc810c2e4
commit bd489c4eaa

View File

@ -406,9 +406,13 @@ uncommitted changes are present' % project.relpath
else: else:
print >>sys.stderr, 'error: %s' % manifest_str print >>sys.stderr, 'error: %s' % manifest_str
sys.exit(1) sys.exit(1)
except socket.error: except (socket.error, IOError, xmlrpclib.Fault), e:
print >>sys.stderr, 'error: cannot connect to manifest server %s' % ( print >>sys.stderr, 'error: cannot connect to manifest server %s:\n%s' % (
self.manifest.manifest_server) self.manifest.manifest_server, e)
sys.exit(1)
except xmlrpclib.ProtocolError, e:
print >>sys.stderr, 'error: cannot connect to manifest server %s:\n%d %s' % (
self.manifest.manifest_server, e.errcode, e.errmsg)
sys.exit(1) sys.exit(1)
rp = self.manifest.repoProject rp = self.manifest.repoProject